/////////////////////////////////////////////////////////////////////////////// /// \file tags.hpp /// Contains the tags for all the overloadable operators in C++ // // Copyright 2008 Eric Niebler. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PROTO_TAGS_HPP_EAN_04_01_2005 #define BOOST_PROTO_TAGS_HPP_EAN_04_01_2005 #include namespace boost { namespace proto { namespace tag { /// Tag type for terminals; aka, leaves in the expression tree. struct terminal {}; /// Tag type for the unary + operator. struct unary_plus {}; /// Tag type for the unary - operator. struct negate {}; /// Tag type for the unary * operator. struct dereference {}; /// Tag type for the unary ~ operator. struct complement {}; /// Tag type for the unary & operator. struct address_of {}; /// Tag type for the unary ! operator. struct logical_not {}; /// Tag type for the unary prefix ++ operator. struct pre_inc {}; /// Tag type for the unary prefix -- operator. struct pre_dec {}; /// Tag type for the unary postfix ++ operator. struct post_inc {}; /// Tag type for the unary postfix -- operator. struct post_dec {}; /// Tag type for the binary \<\< operator. struct shift_left {}; /// Tag type for the binary \>\> operator. struct shift_right {}; /// Tag type for the binary * operator. struct multiplies {}; /// Tag type for the binary / operator. struct divides {}; /// Tag type for the binary % operator. struct modulus {}; /// Tag type for the binary + operator. struct plus {}; /// Tag type for the binary - operator. struct minus {}; /// Tag type for the binary \< operator. struct less {}; /// Tag type for the binary \> operator. struct greater {}; /// Tag type for the binary \<= operator. struct less_equal {}; /// Tag type for the binary \>= operator. struct greater_equal {}; /// Tag type for the binary == operator. struct equal_to {}; /// Tag type for the binary != operator. struct not_equal_to {}; /// Tag type for the binary || operator. struct logical_or {}; /// Tag type for the binary && operator. struct logical_and {}; /// Tag type for the binary & operator. struct bitwise_and {}; /// Tag type for the binary | operator. struct bitwise_or {}; /// Tag type for the binary ^ operator. struct bitwise_xor {}; /// Tag type for the binary , operator. struct comma {}; /// Tag type for the binary ->* operator. struct mem_ptr {}; /// Tag type for the binary = operator. struct assign {}; /// Tag type for the binary \<\<= operator. struct shift_left_assign {}; /// Tag type for the binary \>\>= operator. struct shift_right_assign {}; /// Tag type for the binary *= operator. struct multiplies_assign {}; /// Tag type for the binary /= operator. struct divides_assign {}; /// Tag type for the binary %= operator. struct modulus_assign {}; /// Tag type for the binary += operator. struct plus_assign {}; /// Tag type for the binary -= operator. struct minus_assign {}; /// Tag type for the binary &= operator. struct bitwise_and_assign {}; /// Tag type for the binary |= operator. struct bitwise_or_assign {}; /// Tag type for the binary ^= operator. struct bitwise_xor_assign {}; /// Tag type for the binary subscript operator. struct subscript {}; /// Tag type for the binary virtual data members. struct member {}; /// Tag type for the ternary ?: conditional operator. struct if_else_ {}; /// Tag type for the n-ary function call operator. struct function {}; }}} #endif