Справочное руководство по C++

R.14.3 Эквивалентность типов.

Две конструкции шаблонное-имя-класса обозначают один и тот же класс, если в них совпадают имена шаблонов типа и значения указанных параметров. Например, в следующих описаниях x и y одного типа, который отличен от типа z:

Template‹class E, int size› class buffer;

Buffer‹char, 2*512› x;

Buffer‹char,1024› y;

Buffer‹char,512› z;

Ниже приведены описания, в которых одинаковый тип имеют x2 и x3. Он отличается от типов x1 и x4:

Template‹class T, void(*err_fct)()›

Class list {/*… */};

List‹int,&error_handler1› x1;

List‹int,&error_handler2› x2;

List‹int,&error_handler2› x3;

List‹char,&error_handler2› x4;