设为首页 加入收藏

TOP

1.4 尴尬的Export Template
2013-10-07 16:30:56 来源: 作者: 【 】 浏览:239
Tags:1.4 尴尬 Export Template

1.4 尴尬的Export Template

实际上,除了将模板的声明与实现一同放在头文件中编译之外,C++(www.cppentry.com)标准(98版)还提供了另一种组织模板代码的方式——Export Template(暂且称为外名模板)。而定义与实现放在同一头文件中的模板可称为内名模板。

外名模板的作用在于使得函数模板(或者第2章讲到的类模板)代码可依照C/C++(www.cppentry.com)语言的习惯,将声明与实现分别放在头文件与主文件中。但是为了支持外名模板,需要在编译与链接之间增加额外处理,这也使得外名模板成为C++(www.cppentry.com)标准的争论热点之一。

支持者认为外名模板使得模板代码组织更加模块化,并且可以享受模板代码所带来的一系列好处,例如多个模板实例共用同一本地函数等。而反对者认为,既然内名模板也可以在大部分情况下很好地实现编译意图,再因为外名模板而对编译工具流程做改动则无异于削足适履。

而现实是,外名模板虽然写入C++(www.cppentry.com)98标准,但少有主流编译器支持。这使得外名模板成了镜花水月一般,看起来很美,但是考虑到代码要跨平台可移植等,很少有人会用。并且在最新的标准C++(www.cppentry.com)11中,外名模板也被排除在标准之外,代之以使用关键字extern声明来阻止编译器在本目标文件中生成某些模板实例。

虽然外名模板即将成为(短期内的)历史尘埃,也不妨对其稍做介绍,至少可以给我们提供另一种实现模板的思路。
 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.3.2 链接器如何识别重复模板实.. 下一篇1.4.1 什么是外名模板

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: