Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards



template<class... T>
struct disjunction;

Inherits: Inherits from the first type U in the list for which bool(U::value) is true, or the last type in the list if there is no such type. If sizeof...(T) is 0 then inherits from false_type.

Header: #include <boost/type_traits/disjunction.hpp>

Compiler Compatibility: All current compilers are supported by this trait. In the absence of variadic-template support, disjunction has only 2 parameters.


Given: template<int N> struct Int { static const int value = N };

disjunction<> inherits from false_type.

disjunction<Int<1> > inherits from Int<1>.

disjunction<Int<1>, Int<2>, Int<3> > inherits from Int<1>.

disjunction<Int<0>, Int<2>, Int<3> > inherits from Int<2>.