logo
volkov / C++ / Бьерн Страуструп-Справочное руководство по С++

R.14.8 Статические члены и переменные

Для каждого шаблонного класса или функции, создаваемых по шаблону

типа, образуется своя копия статических переменных или членов.

Рассмотрим пример:

template<class T> class X {

static T s;

// ...

};

X<int> aa;

X<char*> bb;

Здесь в классе X<int> есть статический член типа int, а в классе

X<char> есть статический член типа char*.

Аналогично, в приведенном ниже примере, функция f(int*) имеет

статический член s типа int, а функция f(char**) имеет статический

член типа char**:

template<class T> f(T* p)

{

static T s;

// ...

}

void g(int a, char* b)

{

f(&a);

f(&b);

}