关于模板特化在不同的命名空间的问题

在VS2008下,作者遇到模板特化函数与原模板不在同一命名空间导致的编译错误。即使使用了`using namespace`,编译器仍然无法找到特化函数。解决办法是将模板特化函数移至原模板的命名空间内。
摘要由CSDN通过智能技术生成

 

昨天晚上写代码的时候遇到了这样一个问题:

 

如此代码本以为编译应该没有什么问题,不过现实却是残酷的,一个compiler error毫不犹豫的出现在了输出信息框内

(本人是在VS2008下编译):

1>e:/work/test/test_solution001/test_2010_06_08_template/main.cpp(11) : error C2912: 显式专用化;“const char *debugger::EnumString<int>(const int)”不是函数模板的专用化

 

这是怎么一个情况?按照道理说我使用了using namespace util;语句已经使得util命名空间里面的东西暴露在debugger命名空间里面了?为什么编译器还是找不到。

经过我的再次测试我发现只要将特化函数与其对应的模板函数放到同一个命名

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值