テンプレート引数の enable_if_t の再定義エラー
C では、コードを新しい構文。次のコードは問題を示しています:
template<typename T, typename std::enable_if<std::is_same<int, T>::value>::type* = nullptr> void f() { } template<typename T, typename = std::enable_if_t<std::is_same<int, T>::value>> void g() { }
GCC (5.2) でコンパイルするとエラーが発生します:
"error: redefining of 'template
の原因」エラー
このエラーは、2 つのテンプレート関数 f と g のテンプレート型 void() が同じであるために発生します。 2 番目のテンプレート引数のデフォルト値は異なりますが、型は同じです。
解決策
この問題を解決するには、std:: を使用するように構文を更新します。異なる 2 番目の引数の型を指定したenable_if_t。例:
template<typename T, std::enable_if_t<std::is_same<int, T>::value, int>* = nullptr> void f() { } template<typename T, std::enable_if_t<std::is_same<double, T>::value, double>* = nullptr> void g() { }
この変更により、2 つのテンプレート関数が異なるテンプレート タイプを持つようになり、再定義エラーが排除されます。
以上がテンプレート引数の「enable_if_t」で再定義エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。