17 Templates [temp]

17.5 Template declarations [temp.decls]

17.5.1 Class templates [temp.class]

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

Определение для статического элемента данных или шаблона статического элемента данных может быть предоставлено в области пространства имен, включающей определение шаблона класса статического члена. [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]

Явная специализация статического члена данных, объявленного как массив с неизвестной связью, может иметь границу, отличную от ее определения, если таковая имеется. [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]