Boost C++ Libraries

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

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
Front Page / Metafunctions / Logical Operations / or_

or_

Synopsis

template<
      typename F1
    , typename F2
    ...
    , typename Fn = unspecified
    >
struct or_
{
    typedef unspecified type;
};

Description

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

Header

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

Parameters

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.

Semantics:

Equivalent to

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

Example

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_