を(値)をパック:拡張パラメータは再帰で通常の方法を使用してパックを拡大しようとしているテンプレート引数から
template<bool first> int func1(int value = 0) {
return some_func(first, value);
}
template<bool first, bool... args> int func1(int value = 0) {
return func1<args...>(some_func(first, value));
}
は、コンパイル時の再帰の最後のステップで、関数func1の呼び出しが曖昧で、 第一候補私の場合は最初の関数である、それは明らかだ、いくつかの具体的な専門:[偽=ブール最初付き]
int型の関数func1(int型)
ですが、2番目は
です。int func1(int)[bool first = false;ブール... args = {}]
あなたはそれも正しいことがわかります - 最初のものの後の引数の空集合。 これを防ぐにはどうすればよいですか?
は
は、この構造は一つだけの関数にすることができるようですconstexpr ifを使うif – amigo421