as_marker.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 61 行
HPP
61 行
///////////////////////////////////////////////////////////////////////////////// as_marker.hpp//// 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_DETAIL_STATIC_TRANSFORMS_AS_MARKER_HPP_EAN_04_01_2007#define BOOST_XPRESSIVE_DETAIL_STATIC_TRANSFORMS_AS_MARKER_HPP_EAN_04_01_2007// MS compatible compilers support #pragma once#if defined(_MSC_VER) && (_MSC_VER >= 1020)# pragma once#endif#include <boost/xpressive/detail/detail_fwd.hpp>#include <boost/xpressive/detail/static/static.hpp>#include <boost/xpressive/proto/proto.hpp>namespace boost { namespace xpressive { namespace grammar_detail{ /////////////////////////////////////////////////////////////////////////////// // as_marker // Insert mark tags before and after the expression struct as_marker : proto::callable { template<typename Sig> struct result {}; template<typename This, typename Expr, typename State, typename Visitor> struct result<This(Expr, State, Visitor)> { typedef typename shift_right< terminal<detail::mark_begin_matcher>::type , typename shift_right< typename proto::result_of::right<Expr>::type , terminal<detail::mark_end_matcher>::type >::type >::type type; }; template<typename Expr, typename State, typename Visitor> typename result<void(Expr, State, Visitor)>::type operator ()(Expr const &expr, State const &, Visitor &) const { int mark_nbr = detail::get_mark_number(proto::left(expr)); detail::mark_begin_matcher begin(mark_nbr); detail::mark_end_matcher end(mark_nbr); typename result<void(Expr, State, Visitor)>::type that = {{begin}, {proto::right(expr), {end}}}; return that; } };}}}#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?