模板类成员函数的特化版本选择
来源:互联网 发布:rar解压缩软件官方 编辑:程序博客网 时间:2024/06/13 11:34
写了个简单的代码如下
// test.cpp:#include "test.h"int main(){C<int> c;c.func();}
// test.h#include <cstdio>template<typename T>class C{public:void func(){printf("111\n");}};
// test1.cpp#include "test.h"template<>void C<int>::func(){printf("222\n");}
分别在VS2008和gcc下编译,出现不同的结果:vs下打印111,gcc下打印222。
可见,在分离编译的情况下,vs没能找到函数特化的定义。
进一步测试发现,将特化定义从test1.cpp移至test.h,vs编译通过且打印222,gcc报重定义错误。
于是猜测如下:
vs下的函数特化定义依然是内链接的,所以必须在当前编译模块才能覆盖泛化定义;
gcc下函数特化定义是外链接的,并优先匹配给调用者;
另外,二者特化定义都必须出现在实例化之前,否则编译不通过
有待验证……- 模板类成员函数的特化版本选择
- <类模板 的 成员函数的特化>及<类 的 成员模板函数的特化>
- 模板类成员函数特化写法
- 类模板的成员函数及类的成员模板函数的特化
- 模板类默认参数,模板类的特化,偏特化, 模板成员函数,模板的专用化例子
- 特化类模板成员
- 特化类模板成员
- 函数模板的特化
- 模板函数的特化
- 函数模板的特化
- 函数模板的特化
- 函数模板的特化
- 函数模板的特化
- 模板函数和类的特化以及偏特化
- (函数/类模板)的(偏特化/全特化)
- C++成员函数模板特化问题
- 成员模板特化的概念_隶属相同的类
- c++模板类特化时,其静态成员变量的特化
- 认清自我很重要
- How to add SOA Server (any FMW) Target in EMGC 11g
- Introducing “Razor” – a new view engine for ASP.NET
- 从事程序开发以来,但从未真正做过Java开发—一个Java程序员的心声
- 日期转换为####年##月##日 ##时##分##秒格式
- 模板类成员函数的特化版本选择
- java使用dom4j读取xml的简单例子
- EM11g: How to discover and monitor Tomcat apache server?
- 一种基于有序序列mapjoin的方法
- c 使用libhdfs写数据 配置blocksize
- 把tomcat 的项目移到jboss
- ASP.NET MVC 3: New @model keyword in Razor
- 深入浅出编译原理-2-gcc编译器概览
- ASP.NET MVC 3: Layouts with Razor