テンプレート型推論の推論失敗
型メンバーからテンプレート引数を推論しようとする場合、コンテキストが推論可能であることを確認することが重要です。指定されたコードでは、コンパイラが型名 TMap
この失敗は、「推定不可能なコンテキスト」の概念に起因します。 。」この場合、テンプレート タイプ TMap
TMap の仮想特殊化を考えてみましょう:
template <> struct TMap<SomeType> { typedef std::map<double, double> Type; };
コンパイラーが TMap
TMap をさらに特殊化すると:
template <> struct TMap<OtherType> { typedef std::map<double, double> Type; };
状況はさらに悪化し、次のことが当てはまります:
この曖昧さを考慮すると、コンパイラーは T が SomeType であるか OtherType であるかを判断できません。また、可能な選択肢の数を決定したり、それらの選択肢を識別したりすることもできません。
したがって、テンプレート メンバーの型がテンプレート引数と直接の関係がないこのようなコンテキストでは、テンプレート引数の推定は失敗し、コンパイラはエラーを発生させます。エラー。
以上がメンバータイプから推論するときにテンプレートタイプの推論が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。