2 つのオーバーロードされた関数テンプレートを取得しました。
template <class typ1, class typ2>
void szab(typ1, typ2) {cout << "2 typy" << endl;}
template <class typ1>
void szab(typ1, typ1) {cout << "1 typ" << endl;}
次のような関数を呼び出すと、あいまいさがなくなるのはなぜszab(1, 1);
ですか? 2 番目のテンプレートは最初のテンプレートの特別バージョンではありませんか? テンプレートで 2 つのパラメーターを宣言する場合、それらが異なる型である必要があるという意味ではなく、異なる型である可能性があります。コンパイラが 2 番目のテンプレートを選択するのはなぜですか?