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.
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>.