例如我有
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
);
最佳答案
从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);