0
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つ以上の複数定義されたシンボルが見つかりました

2番目の定義を削除すると、正常にコンパイルされます。

4

1 に答える 1

10

完全な特殊化はもはやテンプレートではなく、通常の関数です。

複数の翻訳単位に含まれる場合は、宣言する必要がありinlineます。

于 2012-12-03T10:00:27.233 に答える