Elementy członkowskie szablonów klas
Członkowie klasy szablonu są tym samym co członkowie klasy.Mogą być statyczne lub niestatyczne, danymi lub funkcjami członków lub nawet innymi szablonami.Mogą być definiowane wewnątrz szablonu klasy lub poza nim.Członkowie szablonu klasy mogą dotyczyć nieznanych typów wymienionych na liście argumentów szablonu tak, jakby były one prawidłową nazwą typu i mogą odwoływać się do wartości nieznanego obiektu określonego w liście argumentów szablonu tak, jakby były stałymi wyrażeniami.
Definiując członków opartych na szablonach klas poza deklaracją klasy trzeba je zadeklarowanć inaczej niż w przypadku klasy bez szablonu.Deklaracja musi być poprzedzona składnią określającą klasę szablonu, której funkcja jest członkiem.
template < template-argument-list > definition
Uwagi
W deklaracji dla funkcji członka poza klasą szablonu należy także określić argumenty szablonu.
template-name < template-argument-list > :: identifier
Przykład
// 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++ pozwala również na zagnieżdżone szablony, określane jako szablony członków.Szablony członków mogą być szablonami zagnieżdżonych klas lub szablonami funkcji członkowskich.