Если класс имеет шаблонную функцию как:
class A {
public:
template<typename T>
static void doThis() {...}
};
template<typename T>
class B {
public:
static void doThat() {
A::doThis<T>();
}
};
затем VC ++ распознает синтаксис в классе B, но для GCC необходимо вставить ключевое слово template :
template<typename T>
class B {
public:
static void doThat() {
A::template doThis<T>(); // <-- "template" inserted
}
};
и затем он работает как в GCC, так и в VC ++ (я написал это на макушке, так что я уверен, что это правильно;)