C ++ Вариантный шаблон И и ИЛИ
Можете ли вы использовать вариабельные шаблоны C ++ 11 для завершения/* ??? */
в:
template<bool...v> struct var_and { static bool constexpr value = /* ??? */; };
чтобыvar_and<v...>::value
обеспечивает&&
над логическим пакетомv
во время компиляции?
Можете ли вы сделать то же самое дляstruct var_or<v...>
за||
?
Можете ли вы использовать оценку короткого замыкания (в обоих случаях)?
Edit: Обновление допринятый ответ добавил, что C ++ 17сложить выражения включить
template<bool... v> constexpr bool var_and = (v && ...);
template<bool... v> constexpr bool var_or = (v || ...);
Кажется, что для подходов, основанных на пакетах параметров, только ограниченный тип «оценки короткого замыкания»; возможно: при создании экземпляраvar_or<true,foo(),bar()>
только звонки||
один раз, он также вызывает обаfoo
а такжеbar
.