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

来源:互联网 发布:三棱手刺 淘宝 编辑:程序博客网 时间:2024/05/21 12:08

 

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

 

如此代码本以为编译应该没有什么问题,不过现实却是残酷的,一个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命名空间里面了?为什么编译器还是找不到。

经过我的再次测试我发现只要将特化函数与其对应的模板函数放到同一个命名空间下即可解决一下问题,也就是说,模板特化函数必须与原模板函数位于同一命名空间下.所以我们只要这样改就OK了:

 

 

 

原创粉丝点击