Элементы шаблонов класса
Элементы шаблонов класса как члены любого класса.Они могут быть статическими или нестатические члены данных или функции или даже другие шаблоны.Их можно определять или внутри класса шаблона или вне его.Члены класса шаблона могут относиться к неизвестным типам, определенным в списке аргументов шаблона, если они были допустимыми именами типов, и они могут относиться к неизвестным значениям объекта, определенным в списке аргументов шаблона, если они были выражениями константы.
Если члены шаблонных классов определены вне объявления класса, их необходимо объявить иначе, чем одно из nontemplated классов.Объявление должно предшествовать синтаксисом, задав класс шаблона, что функция является членом.
template < template-argument-list > definition
Заметки
Декларатор для функции-члена за пределами класса шаблона должен также быть указаны аргументы шаблона.
template-name < template-argument-list > :: identifier
Пример
// members_of_class_templates1.cpp
// compile with: /c
template <class T, int i>
class TempClass {
int MemberSet(T, int);
};
template <class T, int i>
int TempClass< T, i >::MemberSet( T a, int b ) {
if( ( b >= 0 ) && (b < i) ) {
Tarray[b++] = a;
return sizeof( a );
}
else
return -1;
}
C++ также позволяет вложенных шаблонов, именованные шаблоны элемента.Шаблоны элементов могут иметь вложенные шаблоны класса OR шаблоны функции-члена.