Как использовать BOOST_STATIC_ASSERT с условием ИЛИ
Например у меня
BOOST_STATIC_ASSERT(
boost::has_range_iterator<T>::value,
);
но у меня есть другие типы, которые находятся в диапазоне, что я могу обнаружить с
is_foo_type:: значение
Как мне объединить два в качестве дизъюнкции? то есть в psuedocode
BOOST_STATIC_ASSERT(
std::or<
boost::has_range_iterator<T>::value,
is_foo_type<T>::value
>::value
);
1 ответ
Решение
Начиная с C++17 вы можете использовать черту типа std::disjunction
:
BOOST_STATIC_ASSERT(
std::disjunction_v<
boost::has_range_iterator<T>::value,
is_foo_type<T>::value
>
);
До C++17 вы должны использовать ||
, как @StoryTeller упомянул:
BOOST_STATIC_ASSERT(boost::has_range_iterator<T>::value || is_foo_type<T>::value);