テンプレート演繹における部分順序付け手順
テンプレート演繹における部分順序付け手順は、2 つの関数テンプレート間の特殊化関係を決定します。これには 2 つのステージが含まれます:
ステージ 1: 変換
各テンプレートについて、部分順序付けプロシージャは、すべての型と非型を置き換えることによって「変換された関数型」を作成します。 、および一意の未使用タイプを持つテンプレート テンプレート パラメーター。
ステージ 2:比較
変換された関数タイプは 2 つの方法で比較されます:
一方の照合が成功し、もう一方が失敗した場合、照合が成功したテンプレートがより特殊化されていると見なされます。どちらの一致も成功しない場合、どちらのテンプレートもより特殊化されていません。
例:
次の 2 つの関数テンプレートを考慮します。
template<typename T, typename U> void foo(T, U); // Template 1 template<typename T> void foo(T const*, X<T>); // Template 2
決定するにはどちらのテンプレートがより特化されているかというと、
1.変換された関数型の作成:
2.変換された関数の型の比較:
結論: テンプレート 2 はテンプレート 1 よりも特殊です。
以上が部分的な順序付けは関数テンプレート間の特殊化をどのように決定しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。