C++模板特化匹配规则 C++模板特化匹配规则是指在C++编程语言中,模板的特化过程中,编译器如何选择最合适的模板实例化的规则。这个规则是由C++标准所定义的,目的是为了确保编译器能够正确地选择模板实例化,以便生成正确的机器代码。 在C++中,模板特化可以分为两种:类模板特化和函数模板特化。类模板特化是指在类模板中,根据模板参数的不同,选择不同的类模板实例化。函数模板特化是指在函数模板中,根据函数参数的不同,选择不同的函数模板实例化。 类模板特化的匹配规则 ---------------------- 在类模板特化中,编译器会根据模板参数的精度选择最合适的类模板实例化。这个规则可以总结为以下几点: 1. 精度最高的模板参数优先。例如,模板参数T可以是任何类型,而模板参数T*只能是指针类型。因此,在选择类模板实例化时,编译器会优先选择精度最高的模板参数。 2. 特化的模板参数优先于普通模板参数。在选择类模板实例化时,编译器会优先选择特化的模板参数,而不是普通模板参数。 例如,在以下代码中: ```cpp template <class T> class vector { /* ... */ }; // (a) 普通型 template <class T> class vector<T*> { /* ... */ }; // (b) 对指针类型特化 template <> class vector<void*> { /* ... */ }; // (c) 对 void* 进行特化 ``` 编译器会根据模板参数的精度选择最合适的类模板实例化。如果模板参数是普通类型,编译器会选择(a)普通型。如果模板参数是指针类型,编译器会选择(b)对指针类型特化。如果模板参数是void*,编译器会选择(c)对 void* 进行特化。 函数模板特化的匹配规则 ---------------------- 在函数模板特化中,编译器会根据函数参数的不同选择不同的函数模板实例化。这个规则可以总结为以下几点: 1. 非模板函数具有最高的优先权。如果存在非模板函数,可以满足函数调用要求,那么编译器会优先选择非模板函数。 2. 特化的函数模板优先于普通函数模板。如果不存在非模板函数,可以满足函数调用要求,那么编译器会选择最匹配的和最特化的函数模板。 例如,在以下代码中: ```cpp template <class T> void f(T); // (d) template <class T> void f(int, T, double); // (e) template <class T> void f(T*); // (f) template <> void f<int> (int); // (g) void f(double); // (h) ``` 编译器会根据函数参数的不同选择不同的函数模板实例化。如果函数参数是一个普通类型,编译器会选择(d)普通型。如果函数参数是一个指针类型,编译器会选择(f)对指针类型特化。如果函数参数是一个特化类型,编译器会选择(g)对特化类型进行特化。如果函数参数是一个非模板类型,编译器会选择(h)非模板函数。 C++模板特化匹配规则是指编译器在选择模板实例化时遵循的一组规则。这个规则可以确保编译器能够正确地选择模板实例化,以便生成正确的机器代码。 参考文献: [1] Bjarne Stroustrup, The C++ Programming Language (Special Edition), Addison Wesley, 2000 [2] Nicolai M. Josuttis, The C++ Standard Library – A Tutorial and Reference, Addison Wesley, 1999 [3] Stanley Lippman and Josée Lajoie, C++ Primer, 3rd Edition, Addison Wesley Longman, 1998
































- 粉丝: 1993
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 房产公司档案管理制度.doc
- 城市集中供热工程安全施工组织设计.doc
- 工业源扩散预测计算.doc
- [PPT]工程结算管理中需要注意的问题.ppt
- 氧压机组精调垫铁低压缸起始安装施工工法.doc
- 建设工程施工安全标准化管理资料(已排版).doc
- 微信小程序 Artand.zip
- 工程管理流程(已交).doc
- 微信小程序 小程序模板 小程序可视化设计工具 Taro Taro UI.zip
- 广州市第四装修有限公司临时用电方案模板.doc
- 小知识审计、社会审计、工程审计、工程审价.doc
- 员工绩效考核表(公司总经理).doc
- 学校综合教学校投标书.doc
- Awesome for wepy ! 微信小程序组件化开发框架wepy开发资源汇总.zip
- 大型研究所施工组织设计.doc
- 清单计价规范宣贯(5月).ppt


