C++ 如何将BOOST\u STATIC\u ASSERT与OR条件一起使用

C++ 如何将BOOST\u STATIC\u ASSERT与OR条件一起使用,c++,enable-if,C++,Enable If,比如我有 BOOST_STATIC_ASSERT( boost::has_range_iterator<T>::value, ); BOOST\u STATIC\u断言( boost::具有\u范围\u迭代器::值, ); 但我还有其他类型的,我可以用它来检测 is_foo_type::value 如何将二者结合为析取。伪代码中的ie BOOST_STATIC_ASSERT( std::or< boost::has_range_iterat

比如我有

BOOST_STATIC_ASSERT(
     boost::has_range_iterator<T>::value,
);
BOOST\u STATIC\u断言(
boost::具有\u范围\u迭代器::值,
);
但我还有其他类型的,我可以用它来检测

is_foo_type::value

如何将二者结合为析取。伪代码中的ie

BOOST_STATIC_ASSERT(
     std::or<
       boost::has_range_iterator<T>::value,
       is_foo_type<T>::value
     >::value
);
BOOST\u STATIC\u断言(
标准::或<
boost::具有\u范围\u迭代器::值,
is_foo_type::value
>::价值
);
自C++17以来,您可以使用类型特征:


A::value | | B::value
有什么问题吗?Doh!显而易见。我在找一些太复杂的东西:)谢谢
BOOST_STATIC_ASSERT(
     std::disjunction_v<
       boost::has_range_iterator<T>::value,
       is_foo_type<T>::value
     >
);
BOOST_STATIC_ASSERT(boost::has_range_iterator<T>::value || is_foo_type<T>::value);