Я пытался использовать шаблоны variadics для тестирования некоторых propierties (type_trait) во время компиляции, но, кажется, следующий код не может скомпилироватьC++ 11 constexpr VARIADIC логика выражения
template<typename test>
constexpr bool trait_test(){
return test::value;
}
template<typename test, typename... Others>
constexpr bool trait_test(){
return test::value&&trait_test<Others...>();
}
template<typename A, typename... Deriveds>
constexpr bool commonBaseClass{
return trait_test<std::is_base_of<A,Deriveds>...>();
}
Проблема, как представляется, что, когда «Другие» имеет длину от 0 есть 2 возможных вызовы
trait_test<typename test>
trait_test<typename test, typename... Others={}>
и компилятор не знает, которым один выглядывать. Я хочу, конечно, заглянуть первым (и сохранить все constexpr)
В следующий раз включите в свой вопрос http://sscce.org. Это значительно упрощает проверку вашего кода другими. – Xeo