私が取り組んでいるいくつかのコードで問題が発生しています。これは、私が作成できる最も単純化されたバージョンです。
template <class A>
class Outer {
public:
template <class B>
class Inner {
public:
template <class C>
void foo(Outer<C>::Inner<C> innerC) { }
};
Inner<A> inner;
};
class X {};
class Y {};
int main() {
Outer<X> outerX;
Outer<Y> outerY;
outerX.foo<Y>(outerY.inner);
}
エラーは次のとおりです。
error: expected primary-expression before ">" token
の宣言でコンパイル時にトリガーされvoid foo
ます。これを実現している私のコードの何が間違っていますか?
言い換えれば、私がやろうとしているのは、ネストされたクラスが任意のテンプレート型を持つネストされたクラスを取り込めるようにすることですが、もちろん、ネストされたクラスのテンプレート型は外側のクラスのテンプレート型に依存するため、::
構文を使用しますが、エラーが発生します。
ここでやろうとしていることは良い習慣ではないかもしれないことは理解していますが、この質問の目的はテンプレートの構文をよりよく理解することです.