0
なぜなら、次の例では、3つのintを持つインスタンシエーションが2番目の関数テンプレートでは機能しますが、最初のテンプレートでは機能しないという理由があります。 追加:State1/State1のタイプではどちらも機能しません。再帰的なバリデーショナル・テンプレートinstationが失敗する
struct State1{};
struct State2{};
#if 0
template<typename none = void>
constexpr void f()
{
}
template<typename First, typename... Rest>
constexpr void f()
{
f<Rest...>();
}
#else
template<typename none = void>
constexpr void f()
{
}
template<int First, int... Rest>
constexpr void f()
{
f<Rest...>();
}
#endif
void test()
{
f<1, 2, 3>();
// f<State1, State2>();
}
ありがとうございました!
「問題はありません」は問題の説明ではありません。 – melpomene
'1'は型ではなく、その逆もあります。 – krzaq
テンプレートは1つの型を必要とし、整数リテラルを与えます。もう一方のテンプレートは整数を要求し、それに型を与えます。これがうまくいかないことにあなたはどのように驚いていますか? – DeiDei