ホームページ > バックエンド開発 > C++ > コンパイラが「test(TMap::Type)」の「T」を推測できないのはなぜですか?

コンパイラが「test(TMap::Type)」の「T」を推測できないのはなぜですか?

DDD
リリース: 2024-12-17 02:26:25
オリジナル
309 人が閲覧しました

Why Can't the Compiler Deduce `T` in `test(TMap::Type)`?

テンプレートから T を推定できません::Type

提供されたコードでは、テンプレートを推定しようとするとエラーが発生しますテスト関数の引数 T。その理由を理解するには、「推定不可能なコンテキスト」の概念を深く掘り下げることが重要です。

TMap のテンプレート定義では、Type というエイリアスを std::map として定義します。 。関数呼び出し test(tmap) から T を推定しようとすると、コンパイラは推定できないコンテキストに遭遇します。

次のシナリオを考えてみましょう: TMap に、Type が std::map< として定義されている SomeType の特殊化がある場合;double, double>、コンパイラは、TMap::Type であるという知識のみに基づいて、型 SomeType をどのように決定しますか? std::map?この推測は不可能です。

さらに、Type が再び std::map である OtherType に対して TMap の別の特殊化が存在する場合、状況はさらに曖昧になります。 TMap::Type と TMap::Type の既知の等価性を考慮すると、コンパイラーは SomeType と OtherType を識別できません。

コンパイラーは関係について仮定できないことを覚えておくことが重要です。テンプレート定義で使用される型引数の間。したがって、このような推論不可能なコンテキストでは、コンパイラはテンプレート引数 T を自動的に推論できません。

以上がコンパイラが「test(TMap::Type)」の「T」を推測できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート