模板初阶解决“同一份逻辑适配不同类型”,模板进阶则开始解决两个更精细的问题:把编译期常量也作为参数,以及为特定类型或类型形态选择更合适的实现。类型萃取、标准容器、智能指针和泛型算法都大量依赖这些机制。
本文以C++11为主要标准,系统讲解非类型模板参数、函数模板特化、类模板全特化与偏特化、类型萃取和模板分离编译,并纠正常见的术语与版本差异。
一、模板参数 ...
当多个函数或类只有“所处理的数据类型”不同,逐份复制代码不仅低效,还容易让各版本的行为逐渐失去一致。C++模板把类型或编译期常量变成参数,让编译器根据实际使用生成对应代码,是标准库容器、算法、智能指针等设施的重要基础。
本文从泛型编程出发,系统整理函数模板的定义、模板实参推导、显式模板实参、重载匹配规则,以及类模板的定义、实例化、类外成员实现和代码组织方式。 ...
