Функция-член шаблона класса может быть определена вне определения шаблона класса, в котором она объявлена. [ Example:
template<class T> class Array { T* v; int sz; public: explicit Array(int); T& operator[](int); T& elem(int i) { return v[i]; } };
объявляет три шаблона функций. Функция индекса может быть определена следующим образом:
template<class T> T& Array<T>::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); return v[i]; }
— end example ]
Для template-arguments функции-члена шаблона класса определяется template-arguments тип объекта, для которого вызывается функция-член. [ Для будет определяться , к которому применяется операция индексации. Example: template-argumentArray<T>::operator[]()Array
Array<int> v1(20); Array<dcomplex> v2(30); v1[3] = 7; // Array<int>::operator[]() v2[3] = dcomplex(7,8); // Array<dcomplex>::operator[]()
— end example ]