Templates
Материал из fidoman.ru
Классические шаблоны C++ - при использовании происходит инстанциация, генерация кода в соответствии с переданным типов.
Лёгкие шаблоны
- тип-аргумент используется только как указатель на него. Фактически от типа код не зависит от переданного типа, но позволяет гарантировать соответствие типа, передаваемого по указателю.
- тип-аргумент является потомком указанного в шаблоне типа (фиксированного). Таким образом шаблон может использовать свойства базового типа, но при этом обеспечивать инвариантность получаемых и возвращаемых значений. (при отсутствии шаблона тип можно проверить только в рантайме)