proto_typeof.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 136 行

HPP
136
字号
////////////////////////////////////////////////////////////////////////////////// \file proto_typeof.hpp/// Type registrations so that proto expression templates can be used together/// with the Boost.Typeof library.////  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_XPRESSIVE_PROTO_PROTO_TYPEOF_H#define BOOST_XPRESSIVE_PROTO_PROTO_TYPEOF_H#include <boost/xpressive/proto/detail/prefix.hpp>#include <boost/config.hpp>#include <boost/typeof/typeof.hpp>#include <boost/xpressive/proto/proto_fwd.hpp>#include <boost/xpressive/proto/deep_copy.hpp>#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()#include <boost/xpressive/proto/detail/suffix.hpp>BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::terminal)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::posit)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::negate)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::dereference)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::complement)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::address_of)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::logical_not)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::pre_inc)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::pre_dec)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::post_inc)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::post_dec)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::shift_left)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::shift_right)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::multiplies)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::divides)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::modulus)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::plus)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::minus)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::less)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::greater)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::less_equal)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::greater_equal)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::equal_to)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::not_equal_to)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::logical_or)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::logical_and)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::bitwise_and)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::bitwise_or)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::bitwise_xor)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::comma)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::mem_ptr)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::shift_left_assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::shift_right_assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::multiplies_assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::divides_assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::modulus_assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::plus_assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::minus_assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::bitwise_and_assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::bitwise_or_assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::bitwise_xor_assign)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::subscript)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::if_else_)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::tag::function)BOOST_TYPEOF_REGISTER_TYPE(boost::proto::exprns_::is_proto_expr)BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::refns_::ref_, (typename))BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::exprns_::expr, (typename)(typename)(long))BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::utility::literal, (typename)(typename))BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args0, 1)BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args1, 1)BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args2, 2)// can't use PP metaprogramming here because all typeof registrations// must be on separate lines.#if BOOST_PROTO_MAX_ARITY >= 3BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args3, 3)#endif#if BOOST_PROTO_MAX_ARITY >= 4BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args4, 4)#endif#if BOOST_PROTO_MAX_ARITY >= 5BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args5, 5)#endif#if BOOST_PROTO_MAX_ARITY >= 6BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args6, 6)#endif#if BOOST_PROTO_MAX_ARITY >= 7BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args7, 7)#endif#if BOOST_PROTO_MAX_ARITY >= 8BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args8, 8)#endif#if BOOST_PROTO_MAX_ARITY >= 9BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args9, 9)#endif#if BOOST_PROTO_MAX_ARITY >= 10BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args10, 10)#endif#if BOOST_PROTO_MAX_ARITY >= 11BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args11, 11)#endif#if BOOST_PROTO_MAX_ARITY >= 12BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args12, 12)#endif#if BOOST_PROTO_MAX_ARITY >= 13BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args13, 13)#endif#if BOOST_PROTO_MAX_ARITY >= 14BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args14, 14)#endif#if BOOST_PROTO_MAX_ARITY >= 15BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args15, 15)#endif#if BOOST_PROTO_MAX_ARITY >= 16BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args16, 16)#endif#if BOOST_PROTO_MAX_ARITY >= 17BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args17, 17)#endif#if BOOST_PROTO_MAX_ARITY >= 18BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args18, 18)#endif#if BOOST_PROTO_MAX_ARITY >= 19BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args19, 19)#endif#if BOOST_PROTO_MAX_ARITY >= 20BOOST_TYPEOF_REGISTER_TEMPLATE(boost::proto::argsns_::args20, 20)#endif#define BOOST_PROTO_AUTO(Var, Expr) BOOST_AUTO(Var, boost::proto::deep_copy(Expr))#define BOOST_PROTO_AUTO_TPL(Var, Expr) BOOST_AUTO_TPL(Var, boost::proto::deep_copy(Expr))#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?