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