Аргументы шаблона класса выводятся из контекста:
В качестве параметров шаблона могут выступать только имена типов выражений:
В списке параметров шаблона функции ключевые слова typename и class имеют одинаковый смысл:
Если в глобальной области видимости объявлен объект, функция или тип с тем же именем, что у параметра шаблона, то глобальное имя оказывается скрытым:
Компонент класса внутри определения шаблона может иметь одинаковое имя с его параметром:
Объект или тип, объявленные внутри определения шаблона функции, могут иметь то же имя, что и какой-то из параметров:
Объявление шаблона класса аналогично объявлению шаблона функции:
Определение конструктора класса QueueItem подходит для конкретизации общего вида:
При выводе аргументов шаблона принимается во внимание тип значения, возвращаемого конкретизированным шаблоном функции:
При использовании имени класса внутри определения шаблона того же класса можно опускать список параметров типа:
При использовании шаблона Type min( const Type (&r_array)[size] ) с массивами одного и того же типа, но разных размеров, генерируется один экземпляр функции min():
Применение макросов для определения функции может привести к ошибке при выполнении программы с макроподстановкой:
Следует оставлять неизменным тело функции при параметризации типов в ее интерфейсе:
Шаблон класса - предписание для создания класса, в котором один или несколько типов либо значений параметризованы:
Шаблон конкретизируется при определении функции: