我不明白为什么这个模板专业化在VS 2010中失败了

时间:2012-12-03 09:51:25

标签: c++ templates

template<typename T>
T foo(std::string key, T &def_value) {return def_value;}

template<>
std::string foo<std::string>(std::string key, std::string &def_value) {return def_value;}
  

致命错误LNK1169:找到一个或多个多重定义的符号

如果我删除第二个定义,它编译就好了。

1 个答案:

答案 0 :(得分:10)

完全专业化不再是模板,而是普通的功能。

如果它包含在多个翻译单元中,则必须声明inline