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

Front Page / Metafunctions / Logical Operations / or_



      typename F1
    , typename F2
    , typename Fn = unspecified
struct or_
    typedef unspecified type;


Returns the result of short-circuit logical or (||) operation on its arguments.


#include <boost/mpl/or.hpp>
#include <boost/mpl/logical.hpp>


Parameter Requirement Description
F1, F2,... Fn Nullary Metafunction Operation's arguments.

Expression semantics

For arbitrary nullary Metafunctions f1, f2,... fn:

typedef or_<f1,f2,...,fn>::type r;
Return type:Integral Constant.
Semantics:r is true_ if either of f1::type::value, f2::type::value,... fn::type::value expressions evaluates to true, and false_ otherwise; guarantees left-to-right evaluation; the operands subsequent to the first fi metafunction that evaluates to true are not evaluated.
typedef or_<f1,f2,...,fn> r;
Return type:

Integral Constant.


Equivalent to

struct r : or_<f1,f2,...,fn>::type {};


struct unknown;

BOOST_MPL_ASSERT(( or_< true_,true_ > ));
BOOST_MPL_ASSERT(( or_< false_,true_ > ));
BOOST_MPL_ASSERT(( or_< true_,false_ > ));
BOOST_MPL_ASSERT_NOT(( or_< false_,false_ > ));
BOOST_MPL_ASSERT(( or_< true_,unknown > )); // OK
BOOST_MPL_ASSERT(( or_< true_,unknown,unknown > )); // OK too

See also

Metafunctions, Logical Operations, and_, not_