fix doc example typo
[boost.git] / boost / proto / tags.hpp
blob1a490779f31fccf44607b188cb3d64658bf3d9b9
1 ///////////////////////////////////////////////////////////////////////////////
2 /// \file tags.hpp
3 /// Contains the tags for all the overloadable operators in C++
4 //
5 // Copyright 2008 Eric Niebler. Distributed under the Boost
6 // Software License, Version 1.0. (See accompanying file
7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 #ifndef BOOST_PROTO_TAGS_HPP_EAN_04_01_2005
10 #define BOOST_PROTO_TAGS_HPP_EAN_04_01_2005
12 #include <boost/proto/detail/prefix.hpp>
13 #include <boost/proto/proto_fwd.hpp>
14 #include <boost/proto/detail/suffix.hpp>
16 namespace boost { namespace proto { namespace tag
19 /// Tag type for terminals; aka, leaves in the expression tree.
20 struct terminal {};
22 /// Tag type for the unary + operator.
23 struct unary_plus {};
25 /// Tag type for the unary - operator.
26 struct negate {};
28 /// Tag type for the unary * operator.
29 struct dereference {};
31 /// Tag type for the unary ~ operator.
32 struct complement {};
34 /// Tag type for the unary & operator.
35 struct address_of {};
37 /// Tag type for the unary ! operator.
38 struct logical_not {};
40 /// Tag type for the unary prefix ++ operator.
41 struct pre_inc {};
43 /// Tag type for the unary prefix -- operator.
44 struct pre_dec {};
46 /// Tag type for the unary postfix ++ operator.
47 struct post_inc {};
49 /// Tag type for the unary postfix -- operator.
50 struct post_dec {};
52 /// Tag type for the binary \<\< operator.
53 struct shift_left {};
55 /// Tag type for the binary \>\> operator.
56 struct shift_right {};
58 /// Tag type for the binary * operator.
59 struct multiplies {};
61 /// Tag type for the binary / operator.
62 struct divides {};
64 /// Tag type for the binary % operator.
65 struct modulus {};
67 /// Tag type for the binary + operator.
68 struct plus {};
70 /// Tag type for the binary - operator.
71 struct minus {};
73 /// Tag type for the binary \< operator.
74 struct less {};
76 /// Tag type for the binary \> operator.
77 struct greater {};
79 /// Tag type for the binary \<= operator.
80 struct less_equal {};
82 /// Tag type for the binary \>= operator.
83 struct greater_equal {};
85 /// Tag type for the binary == operator.
86 struct equal_to {};
88 /// Tag type for the binary != operator.
89 struct not_equal_to {};
91 /// Tag type for the binary || operator.
92 struct logical_or {};
94 /// Tag type for the binary && operator.
95 struct logical_and {};
97 /// Tag type for the binary & operator.
98 struct bitwise_and {};
100 /// Tag type for the binary | operator.
101 struct bitwise_or {};
103 /// Tag type for the binary ^ operator.
104 struct bitwise_xor {};
106 /// Tag type for the binary , operator.
107 struct comma {};
109 /// Tag type for the binary ->* operator.
110 struct mem_ptr {};
112 /// Tag type for the binary = operator.
113 struct assign {};
115 /// Tag type for the binary \<\<= operator.
116 struct shift_left_assign {};
118 /// Tag type for the binary \>\>= operator.
119 struct shift_right_assign {};
121 /// Tag type for the binary *= operator.
122 struct multiplies_assign {};
124 /// Tag type for the binary /= operator.
125 struct divides_assign {};
127 /// Tag type for the binary %= operator.
128 struct modulus_assign {};
130 /// Tag type for the binary += operator.
131 struct plus_assign {};
133 /// Tag type for the binary -= operator.
134 struct minus_assign {};
136 /// Tag type for the binary &= operator.
137 struct bitwise_and_assign {};
139 /// Tag type for the binary |= operator.
140 struct bitwise_or_assign {};
142 /// Tag type for the binary ^= operator.
143 struct bitwise_xor_assign {};
145 /// Tag type for the binary subscript operator.
146 struct subscript {};
148 /// Tag type for the binary virtual data members.
149 struct member {};
151 /// Tag type for the ternary ?: conditional operator.
152 struct if_else_ {};
154 /// Tag type for the n-ary function call operator.
155 struct function {};
159 #endif