Это распространенная путаница для многих (включая страницу «Общее программирование» в Википедии, некоторые учебные пособия по C ++ и другие ответы на этой странице). Что касается C ++, не существует такого понятия, как «шаблон класса», есть только «шаблон класса». Способ прочитать эту фразу - «шаблон для класса», так как в отличие от «шаблона функции», который является «шаблоном для функции». Опять же: классы не определяют шаблоны, шаблоны определяют классы (и функции). Например, это шаблон , в частности шаблон класса , но это не класс :
template<typename T> class MyClassTemplate
{
...
};
Объявление MyClassTemplate<int>
- это класс или педантично, класс, основанный на шаблоне. Не существует специальных свойств класса, основанного на шаблоне, по сравнению с классом, не основанным на шаблоне. Специальные свойства самого шаблона .
Фраза «шаблонный класс» ничего не значит, потому что слово «шаблон» не имеет значения в качестве прилагательного применительно к существительному «классу» в том, что касается C ++. Это подразумевает существование класса , который является (или определяет) шаблоном , который не является понятием, существующим в C ++.
Я понимаю общую путаницу, поскольку она, вероятно, основана на том факте, что слова появляются в порядке «шаблонный класс» на реальном языке, а это совсем другая история.