26. 实例化
模板实例化是将模板定义转换为实际代码的过程,分为生成特例化和显式特例化。编译器在需要模板类或函数的实际定义时进行实例化,例如使用类的对象时。C++ 提供了 `template` 和 `extern template` 关键字来控制实例化,前者用于显式实例化模板,后者用于控制特定编译单元中的实例化。 名字绑定是指在模板实例化时查找模板中使用的所有名字的定义。依赖名字(依赖于模板参数的名字)的查找会延迟到实例化时进行,而非依赖名字则在模板定义时完成绑定。为了使依赖名字被识别为类型名,必须使用 `typename` 关键字显式说明。类似地,使用成员模板时需要用 `template` 关键字。通过这些机制,C++ 确保了模板在实例化时的正确性和灵活性。