В вашем примере вы не указываете пространство имен ваших статических определений, так как закрываете его перед статическими операторами.
Кроме того, вы не даете тип возврата для определения fun ().
Это должно быть лучше:
namespace N{
template<typename T>class Ex{
public:
static int x;
static int fun();
}
}
template<class T> N::Ex<T>::x=static_cast<T>(0);
template<class T> T N::Ex<T>::fun(){return static_cast<T>(10);}
int main(){ return 0; }
Предполагая, что ваш параметр шаблона T каким-то образом числовой.
UPDATE:
Исправляя несколько вещей в вашем коде, этот компилируется с помощью g ++:
namespace N{
template<class T> class Ex{
public:
static T x;
static T fun();
};
}
template<class T> T N::Ex<T>::x=static_cast<T>(0);
template<class T> T N::Ex<T>::fun(){return static_cast<T>(10);}
int main(){ return 0; }