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

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);

}