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

Click here to view the latest version of this page.
PrevUpHomeNext

has_bit_or

template <class Lhs, class Rhs=Lhs, class Ret=dont_care>
struct has_bit_or : public true_type-or-false_type {};

Inherits: If (i) lhs of type Lhs and rhs of type Rhs can be used in expression lhs|rhs, and (ii) Ret=dont_care or the result of expression lhs|rhs is convertible to Ret then inherits from true_type, otherwise inherits from false_type.

The default behaviour (Ret=dont_care) is to not check for the return value of binary operator|. If Ret is different from the default dont_care type, the return value is checked to be convertible to Ret. Convertible to Ret means that the return value of the operator can be used as argument to a function expecting Ret:

void f(Ret);
Lhs lhs;
Rhs rhs;
f(lhs|rhs); // is valid if has_bit_or<Lhs, Rhs, Ret>::value==true

If Ret=void, the return type is checked to be exactly void.

Header: #include <boost/type_traits/has_bit_or.hpp> or #include <boost/type_traits/has_operator.hpp> or #include <boost/type_traits.hpp>

Examples:

has_bit_or<Lhs, Rhs, Ret>::value_type is the type bool.

has_bit_or<Lhs, Rhs, Ret>::value is a bool integral constant expression.

has_bit_or<int>::value is a bool integral constant expression that evaluates to true.

has_bit_or<long> inherits from true_type.

has_bit_or<int, int, int> inherits from true_type.

has_bit_or<const int, int> inherits from true_type.

has_bit_or<int, double, bool> inherits from false_type.

has_bit_or<int, int, std::string> inherits from false_type.

See also: Operator Type Traits

Limitation:

Known issues:


PrevUpHomeNext