Each class template instantiation has its own copy of any static data
members. The static declaration can be of template argument type or of
any defined type.
You must separately define static members. The following example demonstrates this:
template <class T> class K { public: static T x; }; template <class T> T K<T> ::x; int main() { K<int>::x = 0; }The statement template T K::x defines the static member of class K, while the statement in the main() function assigns a value to the data member for K <int>.
Related References