Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
operators.hpp File Reference
Include dependency graph for operators.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  boost::proto::detail::lazy_matches< MakeExpr, Grammar >
 
struct  boost::proto::detail::enable_unary< Domain, Grammar, Trait, Tag, Arg >
 
struct  boost::proto::detail::enable_unary< Domain, proto::_, Trait, Tag, Arg & >
 
struct  boost::proto::detail::enable_unary< deduce_domain, not_a_grammar, Trait, Tag, Arg & >
 
struct  boost::proto::detail::enable_binary< Domain, Grammar, Trait, Tag, Left, Right >
 
struct  boost::proto::detail::enable_binary< Domain, proto::_, Trait, Tag, Left &, Right & >
 
struct  boost::proto::detail::enable_binary< deduce_domain, not_a_grammar, Trait, Tag, Left &, Right & >
 
struct  boost::proto::is_extension< T >
 
struct  boost::proto::is_extension< T & >
 

Namespaces

 boost
 Duration formatting facet for input.
 
 boost::proto
 
 boost::proto::detail
 
 boost::proto::exprns_
 

Macros

#define BOOST_PROTO_UNARY_OP_IS_POSTFIX_0
 
#define BOOST_PROTO_UNARY_OP_IS_POSTFIX_1   , int
 
#define BOOST_PROTO_DEFINE_UNARY_OPERATOR(OP, TAG, TRAIT, DOMAIN, POST)
 
#define BOOST_PROTO_DEFINE_BINARY_OPERATOR(OP, TAG, TRAIT, DOMAIN)
 
#define BOOST_PROTO_DEFINE_OPERATORS(TRAIT, DOMAIN)
 
#define BOOST_PROTO_APPLY_UNARY_(TRAIT, ARG)   TRAIT<ARG>
 
#define BOOST_PROTO_APPLY_BINARY_(TRAIT, LEFT, RIGHT)   boost::mpl::or_<TRAIT<LEFT>, TRAIT<RIGHT> >
 
#define BOOST_PROTO_APPLY_UNARY_(TRAIT, ARG)
 
#define BOOST_PROTO_APPLY_BINARY_(TRAIT, LEFT, RIGHT)
 

Functions

template<typename Arg >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_unary
< deduce_domain,
deduce_domain::proto_grammar,
is_extension< Arg >
, boost::proto::tag::unary_plus,
Arg const & >::type const 
boost::proto::exprns_::operator+ (Arg &&arg)
 
template<typename Arg >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_unary
< deduce_domain,
deduce_domain::proto_grammar,
is_extension< Arg >
, boost::proto::tag::negate,
Arg const & >::type const 
boost::proto::exprns_::operator- (Arg &&arg)
 
template<typename Arg >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_unary
< deduce_domain,
deduce_domain::proto_grammar,
is_extension< Arg >
, boost::proto::tag::dereference,
Arg const & >::type const 
boost::proto::exprns_::operator* (Arg &&arg)
 
template<typename Arg >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_unary
< deduce_domain,
deduce_domain::proto_grammar,
is_extension< Arg >
, boost::proto::tag::complement,
Arg const & >::type const 
boost::proto::exprns_::operator~ (Arg &&arg)
 
template<typename Arg >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_unary
< deduce_domain,
deduce_domain::proto_grammar,
is_extension< Arg >
, boost::proto::tag::address_of,
Arg const & >::type const 
boost::proto::exprns_::operator& (Arg &&arg)
 
template<typename Arg >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_unary
< deduce_domain,
deduce_domain::proto_grammar,
is_extension< Arg >
, boost::proto::tag::logical_not,
Arg const & >::type const 
boost::proto::exprns_::operator! (Arg &&arg)
 
template<typename Arg >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_unary
< deduce_domain,
deduce_domain::proto_grammar,
is_extension< Arg >
, boost::proto::tag::pre_inc,
Arg const & >::type const 
boost::proto::exprns_::operator++ (Arg &&arg)
 
template<typename Arg >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_unary
< deduce_domain,
deduce_domain::proto_grammar,
is_extension< Arg >
, boost::proto::tag::pre_dec,
Arg const & >::type const 
boost::proto::exprns_::operator-- (Arg &&arg)
 
template<typename Arg >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_unary
< deduce_domain,
deduce_domain::proto_grammar,
is_extension< Arg >
, boost::proto::tag::post_inc,
Arg const & >::type const 
boost::proto::exprns_::operator++ (Arg &&arg, int)
 
template<typename Arg >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_unary
< deduce_domain,
deduce_domain::proto_grammar,
is_extension< Arg >
, boost::proto::tag::post_dec,
Arg const & >::type const 
boost::proto::exprns_::operator-- (Arg &&arg, int)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::shift_left,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator<< (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::shift_right,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator>> (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::multiplies,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator* (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::divides,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator/ (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::modulus,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator% (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::plus,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator+ (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::minus,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator- (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::less,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator< (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::greater,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator> (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::less_equal,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator<= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::greater_equal,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator>= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::equal_to,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator== (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::not_equal_to,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator!= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::logical_or,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator|| (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::logical_and,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator&& (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::bitwise_and,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator& (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::bitwise_or,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator| (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::bitwise_xor,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator^ (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::comma,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator BOOST_PP_COMMA() (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::mem_ptr,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator->* (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::shift_left_assign,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator<<= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::shift_right_assign,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator>>= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::multiplies_assign,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator*= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::divides_assign,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator/= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::modulus_assign,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator%= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::plus_assign,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator+= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::minus_assign,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator-= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::bitwise_and_assign,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator&= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::bitwise_or_assign,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator|= (Left &&left, Right &&right)
 
template<typename Left , typename Right >
BOOST_PROTO_DISABLE_MSVC_C4714
BOOST_FORCEINLINE
boost::proto::detail::enable_binary
< deduce_domain,
deduce_domain::proto_grammar,
boost::mpl::or_< is_extension
< Left >, is_extension< Right >
>, boost::proto::tag::bitwise_xor_assign,
Left const &, Right const & >
::type const 
boost::proto::exprns_::operator^= (Left &&left, Right &&right)
 
template<typename A0 , typename A1 , typename A2 >
BOOST_FORCEINLINE
result_of::make_expr
< tag::if_else_, deduce_domain,
A0 const &, A1 const &, A2
const & >::type const 
boost::proto::exprns_::if_else (A0 const &a0, A1 const &a1, A2 const &a2)
 

Macro Definition Documentation

#define BOOST_PROTO_APPLY_BINARY_ (   TRAIT,
  LEFT,
  RIGHT 
)    boost::mpl::or_<TRAIT<LEFT>, TRAIT<RIGHT> >
#define BOOST_PROTO_APPLY_BINARY_ (   TRAIT,
  LEFT,
  RIGHT 
)
Value:
boost::mpl::or_<TRAIT<BOOST_PROTO_UNCVREF(LEFT) >, TRAIT<BOOST_PROTO_UNCVREF(RIGHT) > > \
boost::proto::is_extension<LEFT> \
> \
> \
> \
boost::mpl::and_< Bool1, Bool2 > * and_(Bool1 *, Bool2 *)
Definition: foreach.hpp:203
Definition: operators.hpp:280
Definition: not.hpp:39
boost::mpl::or_< Bool1, Bool2 > * or_(Bool1 *, Bool2 *)
Definition: foreach.hpp:209
#define BOOST_PROTO_APPLY_UNARY_ (   TRAIT,
  ARG 
)    TRAIT<ARG>
#define BOOST_PROTO_APPLY_UNARY_ (   TRAIT,
  ARG 
)
Value:
TRAIT<BOOST_PROTO_UNCVREF(ARG) > \
> \
boost::mpl::and_< Bool1, Bool2 > * and_(Bool1 *, Bool2 *)
Definition: foreach.hpp:203
Definition: not.hpp:39
#define BOOST_PROTO_DEFINE_BINARY_OPERATOR (   OP,
  TAG,
  TRAIT,
  DOMAIN 
)
Value:
template<typename Left, typename Right> \
DOMAIN \
, DOMAIN::proto_grammar \
, BOOST_PROTO_APPLY_BINARY_(TRAIT, Left, Right) \
, TAG \
, Left const & \
, Right const & \
>::type const \
operator OP(Left &&left, Right &&right) \
{ \
return boost::proto::detail::make_expr_<TAG, DOMAIN, Left const &, Right const &>()(left, right);\
} \
return b left
Definition: map_by.hpp:111
interval_bounds right(interval_bounds x1)
Definition: interval_bounds.hpp:21
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
Definition: operators.hpp:69
#define BOOST_PROTO_DISABLE_MSVC_C4714
Definition: proto_fwd.hpp:131
#define BOOST_PROTO_APPLY_BINARY_(TRAIT, LEFT, RIGHT)
Definition: operators.hpp:358
#define BOOST_PROTO_DEFINE_OPERATORS (   TRAIT,
  DOMAIN 
)
#define BOOST_PROTO_DEFINE_UNARY_OPERATOR (   OP,
  TAG,
  TRAIT,
  DOMAIN,
  POST 
)
Value:
template<typename Arg> \
DOMAIN \
, DOMAIN::proto_grammar \
, BOOST_PROTO_APPLY_UNARY_(TRAIT, Arg) \
, TAG \
, Arg const & \
>::type const \
operator OP(Arg &&arg BOOST_PROTO_UNARY_OP_IS_POSTFIX_ ## POST) \
{ \
return boost::proto::detail::make_expr_<TAG, DOMAIN, Arg const &>()(arg); \
} \
Definition: arg_fwd.hpp:23
Definition: operators.hpp:39
#define BOOST_PROTO_APPLY_UNARY_(TRAIT, ARG)
Definition: operators.hpp:351
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
#define BOOST_PROTO_DISABLE_MSVC_C4714
Definition: proto_fwd.hpp:131
#define BOOST_PROTO_UNARY_OP_IS_POSTFIX_0
#define BOOST_PROTO_UNARY_OP_IS_POSTFIX_1   , int