我正在尝试使用 g++ 编译一些 Microsoft Visual C++ 代码。现在我遇到了一个我真的无法理解的编译器错误。(简化的)代码如下所示:
template<int X> struct A {
template<class Ret> static Ret call() {
return 0;
}
};
template<int X> struct B : A<X> {
int f() {
return A<X>::call<int>();
}
};
当我尝试使用 g++(版本 4.4.5)编译它时,我收到以下错误:
main.cpp: In member function int B<X>::f():
main.cpp:16: error: expected primary-expression before int
main.cpp:16: error: expected ; before int
main.cpp:16: error: expected unqualified-id before > token
如果我从方法 A::call 中删除模板类型 (Ret),则代码编译得很好。任何人都可以看到这里有什么问题吗?
谢谢!