ホームページ >バックエンド開発 >C++ >この関数呼び出しで TMap テンプレートの型推定が失敗するのはなぜですか?

この関数呼び出しで TMap テンプレートの型推定が失敗するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-23 01:10:08746ブラウズ

Why Does Type Deduction Fail for My TMap Template in This Function Call?

TMap テンプレートの型推論エラー

テスト関数の呼び出し時の推論エラーに関するクエリに応じて、問題はT テンプレート パラメーターがインスタンス化される推定不可能なコンテキスト。

テスト関数内では、コンパイラは、パラメータ tmap_ の型に基づいて型 T を推定しようとします。ただし、異なる型 (TMap や TMap など) に対して TMap テンプレートの複数の特殊化が存在する可能性があるため、コンパイラーは tmap_ の型を調べるだけでは T の型を一意に決定できません。

仮説を考えてみましょう特殊化:

template <>
struct TMap<SomeType>
{
    typedef std::map<double, double> Type;
};

このシナリオでは、TMap::Type は std::map と同等になります。ただし、OtherType に別の特殊化が存在し、その型も std::map として定義されている場合、コンパイラは、std::map に直面したときに、T がどの型に対応するかを推測できません。 type of tmap_.

tmap_ の型と T の型の間の一意の対応関係を確立するためにコンパイラが利用できる情報が不足しているため、推定エラーが報告されます。この問題を解決するには、テスト関数を呼び出すときに型 T を明示的に指定し、正しいテンプレート特殊化が選択されていることを確認する必要があります。

以上がこの関数呼び出しで TMap テンプレートの型推定が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。