gcc 类成员模版函数偏特化问题

Enter空格 2016-08-29 03:28:16
以下代码在gcc提示重复定义。
.h文件
#ifndef _TEST_OBJ_H
#define _TEST_OBJ_H
#include <stdio.h>

class OBJ{
public:
template<typename T>
void test(T value){
printf("标准特化\n");
}

};

template<>
void OBJ::test(int value){
printf("int特化\n");
}
#endif


main.cpp

#include "obj.h"
int main()
{
OBJ obj;
obj.test(1.1);
obj.test(1);
return 0;
}


就是想使用类模版函数的偏特化,vs编译器非常容易写出来的东西,
结果在gcc编译器中,尝试了各种写法,都没写出来。
墨迹半天了,过来问问,有谁编过吗?
声明下,上面这段代码,VS是编译不过的,VS把偏特化仍然放到类中。
所以别直接拿这个代码在VS中尝试,并且我问的也不是VS。
...全文
342 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Enter空格 2016-08-29
  • 打赏
  • 举报
回复
哦,不好意思瞎用名词了。 问题也找到了,gcc里专用特化类型的类名写错了,尴尬。
转角天边 2016-08-29
  • 打赏
  • 举报
回复
函数模板没有偏特化,你这里写的也是全特化
  • 打赏
  • 举报
回复
至少2个模板参数才有偏特化。 你这是特化
pengzhixi 2016-08-29
  • 打赏
  • 举报
回复
引用 3 楼 mymixing 的回复:
[quote=引用 2 楼 pengzhixi 的回复:] 新标准我不了解,旧标准模板函数是没有所谓的偏特化的,只有特化。
偏特化c++98就有吧。。[/quote] 偏特化只针对模板类,不针对模板函数,看了下新标准,也只有针对类的偏特化。
Enter空格 2016-08-29
  • 打赏
  • 举报
回复
引用 1 楼 qq_32966993 的回复:
我是VS2013 能编译通过 而且偏特化也正常 你的GCC啥版本的啊。。。。
之前尝试太多次,应该是记差了, 总体是VS比较能轻松写出没问题的实现来。 GCC中分成.h,pp编译就重复定义,也有可能是makefile写的不对。
Enter空格 2016-08-29
  • 打赏
  • 举报
回复
引用 2 楼 pengzhixi 的回复:
新标准我不了解,旧标准模板函数是没有所谓的偏特化的,只有特化。
偏特化c++98就有吧。。
pengzhixi 2016-08-29
  • 打赏
  • 举报
回复
新标准我不了解,旧标准模板函数是没有所谓的偏特化的,只有特化。
qq_32966993 2016-08-29
  • 打赏
  • 举报
回复
我是VS2013 能编译通过 而且偏特化也正常 你的GCC啥版本的啊。。。。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧