外部ライブラリを使用する必要がありますが、std :: stringで呼び出された場合、次のテンプレート関数とその明示的な特殊化から「複数定義エラー」が発生します。
template <typename T>
void foo(T& value);
template <>
void foo(std::string& value);
2番目の関数をに変更しても
void foo(std::string& value);
問題は同じです。
[1]によると、少なくともテンプレートのないバージョン(「プレーンな古い関数」)は、テンプレートバージョンよりも優先されるべきです。
問題がどこにあるのか、誰かが手がかりを持っていますか?