次の形式のコードに問題があります。
template<class Type>
class Class1 {
public:
template<class TypeName1> TypeName1* method1() const {return 0;}
};
struct Type1{};
struct Type2{};
class Class2 {
public:
template<typename TypeName1, typename TypeName2>
int method2() {
Class1<TypeName2> c;
c.method1<TypeName1>();
return 0;
}
int method1() {
return method2<Type1, Type2>();
}
};
int
main() {
Class2 c;
return c.method1();
}
コードパッドでコンパイラを使用してコンパイルした場合:
次のエラーが発生します。
t.cpp:メンバー関数'int Class2 :: method2()':15行目:エラー:-Wfatal-errorsが原因で、'>'トークンのコンパイルが終了する前にプライマリ式が必要です。
問題のある行は、テンプレートメンバー関数の呼び出しです。
c.method1<TypeName1>();