17 Templates [temp]

17.6 Template declarations [temp.decls]

17.6.1 Class templates [temp.class]

17.6.1.3 Static data members of class templates [temp.static]

A definition for a static data member or static data member template may be provided in a namespace scope enclosing the definition of the static member's class template.
[Example
:
template<class T> class X {
  static T s;
};
template<class T> T X<T>::s = 0;

struct limits {
  template<class T>
    static const T min;                 // declaration
};

template<class T>
  const T limits::min = { };            // definition
end example
]
An explicit specialization of a static data member declared as an array of unknown bound can have a different bound from its definition, if any.
[Example
:
template <class T> struct A {
  static int i[];
};
template <class T> int A<T>::i[4];      // 4 elements
template <> int A<int>::i[] = { 1 };    // OK: 1 element
end example
]