Есть ли способ заставить этот код работать как задумано?
#include <iostream>
using namespace std;
template<typename T> class templated{
public:
static void f(){
cout<<"doing something generically"<<endl;
}
};
template<> class templated<int>{
public:
static void g(){
cout<<"doing something else, but specific to int"<<endl;
f();
}
};
int main(){
templated<int>::g();
}
G ++ жалуется, что f не объявлена в области видимости.Я перепробовал все возможные варианты в вызове f()
(templated<int>::f()
, добавление фиктивной декларации в templated
, перенесение декларации за пределы определения класса ...), все из которых завершились неудачей, поэтому я опущу их здесь.