は、与えられた次のような単純な可変個引数テンプレートコンストラクタの優先順位
template <typename T>
struct A
{
A(T a) {}
template <typename ... Ts>
A(T a, Ts ... more) {}
};
int main()
{
A<int> a(1);
}
何A(T a)
は、可変長引数テンプレートコンストラクタの代わりに呼び出されるという保証はあり、なぜstruct
? T
がint
として推定することができたときに
14.8.2.4がより特殊であるかを確認するために、2つの関数テンプレートを比較する程度です。しかし、この例の候補関数の1つは、関数テンプレートではありません。 – aschepler
@aschepler完全に一致するテンプレート以外の関数を持つと、テンプレート解決を開始する必要がないということもあるので、コンパイラはこれまでこれを取得する必要はありません。同意する。これをカバーする別のセクションがあります。 –