Я пытаюсь скомпилировать код Microsoft Visual C++ с помощью g ++. Теперь я столкнулся с ошибкой компилятора, которую я действительно не понимаю. (Упрощенно) код выглядит следующим образом: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, код компилируется просто отлично. Кто-нибудь может понять, что здесь не так?
Спасибо!
возможно дубликат [Где и почему я должен поставить «шаблон» и «TYPENAME» ключевые слова?] (Http://stackoverflow.com/questions/610245/where-and-why-do- i-have-to-put-the-template-and-typename-keywords) –