Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Operator Tags and Metafunctions

The following table lists the overloadable C++ operators, the Proto tag types for each, and the name of the metafunctions for generating the corresponding Proto expression types. And as we'll see later, the metafunctions are also usable as grammars for matching such nodes, as well as pass-through transforms.

Table 1.6. Operators, Tags and Metafunctions

Operator

Proto Tag

Proto Metafunction

unary +

proto::tag::unary_plus

proto::unary_plus<>

unary -

proto::tag::negate

proto::negate<>

unary *

proto::tag::dereference

proto::dereference<>

unary ~

proto::tag::complement

proto::complement<>

unary &

proto::tag::address_of

proto::address_of<>

unary !

proto::tag::logical_not

proto::logical_not<>

unary prefix ++

proto::tag::pre_inc

proto::pre_inc<>

unary prefix --

proto::tag::pre_dec

proto::pre_dec<>

unary postfix ++

proto::tag::post_inc

proto::post_inc<>

unary postfix --

proto::tag::post_dec

proto::post_dec<>

binary <<

proto::tag::shift_left

proto::shift_left<>

binary >>

proto::tag::shift_right

proto::shift_right<>

binary *

proto::tag::multiplies

proto::multiplies<>

binary /

proto::tag::divides

proto::divides<>

binary %

proto::tag::modulus

proto::modulus<>

binary +

proto::tag::plus

proto::plus<>

binary -

proto::tag::minus

proto::minus<>

binary <

proto::tag::less

proto::less<>

binary >

proto::tag::greater

proto::greater<>

binary <=

proto::tag::less_equal

proto::less_equal<>

binary >=

proto::tag::greater_equal

proto::greater_equal<>

binary ==

proto::tag::equal_to

proto::equal_to<>

binary !=

proto::tag::not_equal_to

proto::not_equal_to<>

binary ||

proto::tag::logical_or

proto::logical_or<>

binary &&

proto::tag::logical_and

proto::logical_and<>

binary &

proto::tag::bitwise_and

proto::bitwise_and<>

binary |

proto::tag::bitwise_or

proto::bitwise_or<>

binary ^

proto::tag::bitwise_xor

proto::bitwise_xor<>

binary ,

proto::tag::comma

proto::comma<>

binary ->*

proto::tag::mem_ptr

proto::mem_ptr<>

binary =

proto::tag::assign

proto::assign<>

binary <<=

proto::tag::shift_left_assign

proto::shift_left_assign<>

binary >>=

proto::tag::shift_right_assign

proto::shift_right_assign<>

binary *=

proto::tag::multiplies_assign

proto::multiplies_assign<>

binary /=

proto::tag::divides_assign

proto::divides_assign<>

binary %=

proto::tag::modulus_assign

proto::modulus_assign<>

binary +=

proto::tag::plus_assign

proto::plus_assign<>

binary -=

proto::tag::minus_assign

proto::minus_assign<>

binary &=

proto::tag::bitwise_and_assign

proto::bitwise_and_assign<>

binary |=

proto::tag::bitwise_or_assign

proto::bitwise_or_assign<>

binary ^=

proto::tag::bitwise_xor_assign

proto::bitwise_xor_assign<>

binary subscript

proto::tag::subscript

proto::subscript<>

ternary ?:

proto::tag::if_else_

proto::if_else_<>

n-ary function call

proto::tag::function

proto::function<>



PrevUpHomeNext