c++ - 我不明白为什么这个模板特化在 VS 2010 中失败

标签 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;}

fatal error LNK1169: one or more multiply defined symbols found

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

最佳答案

全特化不再是模板,而是一个普通的函数。

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

关于c++ - 我不明白为什么这个模板特化在 VS 2010 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13680725/

相关文章:

c++ - 模板和结构的混合

c++ - give_me_a_name 是什么意思?

java - Google ProtoBuf 序列化/反序列化

c++ - 使用指向 "this"的 volatile 指针的此模式的目的是什么?

android - 汇编程序消息 : Branch out of range

c++ - 我可以重载具有类型特征的函数吗?

c++ - 可变参数模板索引包扩展

c++ - 模拟从标准模板库中删除的函数无法正常工作

templates - 通过 HStringTemplate 生成带有一些逻辑的模板

c++ - 成员初始值设定项的顺序