例如我有
BOOST_STATIC_ASSERT(
boost::has_range_iterator<T>::value,
);
但是我还有其他可以检测到的范围
is_foo_type :: value
我如何将两者结合在一起作为析取。即在伪代码中
BOOST_STATIC_ASSERT(
std::or<
boost::has_range_iterator<T>::value,
is_foo_type<T>::value
>::value
);
答案 0 :(得分:2)
自 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);