我想使用g ++編譯一些Microsoft Visual C++代碼。現在我遇到了一個我真正無法理解的編譯器錯誤。 (簡化)的代碼如下所示:模板化的基類成員的g ++編譯器錯誤
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>();
}
};
當我嘗試相剋編譯此++(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
如果我刪除模板類型(Ret)從方法A :: call,代碼編譯得很好。有人可以看到這裏有什麼錯嗎?
謝謝!
可能重複[在哪裏,爲什麼我必須把「模板」和「類型名稱」關鍵字?](http://stackoverflow.com/questions/610245/where-and-why-do-我必須把模板和類型名關鍵字 –