なぜ C は推定不可能なコンテキストで T を推定できないのですか?
指定されたコード スニペットでは、テンプレート構造体 TMap は次のように定義されています。ネストされた型 テンプレート引数 T を使用して std::map の特殊化を表す型。ただし、コンパイラは推定に失敗します。関数 test 内の T。
Non-Deducible Context
コードが型 typename TMap
型推論のあいまいさ
推論不可能なコンテキストでは、コンパイラは次のようになります。引数の型が T を一意に決定しないため、テンプレート引数を推論できません。たとえば、次のことを考えてください。 scenario:
template <> struct TMap<SomeType> { typedef std::map<double, double> Type; }; template <> struct TMap<OtherType> { typedef std::map<double, double> Type; };
この場合、TMap
結果
推論不可能なコンテキストの制限には重要な意味があります。
軽減策
この制限を軽減するには、テンプレートのテンプレート引数や C 20 の std::is_same_v などの手法を使用して手動で推定することができます。テンプレート引数を指定するか、明示的なテンプレート パラメーター リストを指定します。
以上がC が推定不可能なコンテキストでテンプレート引数を推定できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。