亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fusion.hpp

?? Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
?? HPP
?? 第 1 頁 / 共 2 頁
字號:
////////////////////////////////////////////////////////////////////////////////// \file fusion.hpp/// Make any Proto expression a valid Fusion sequence////  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_FUSION_HPP_EAN_11_04_2006#define BOOST_PROTO_FUSION_HPP_EAN_11_04_2006#include <boost/xpressive/proto/detail/prefix.hpp>#include <boost/config.hpp>#include <boost/version.hpp>#include <boost/type_traits/remove_reference.hpp>#include <boost/mpl/if.hpp>#include <boost/mpl/long.hpp>#if BOOST_VERSION >= 103500#include <boost/fusion/include/is_view.hpp>#include <boost/fusion/include/tag_of_fwd.hpp>#include <boost/fusion/include/category_of.hpp>#include <boost/fusion/include/iterator_base.hpp>#include <boost/fusion/include/intrinsic.hpp>#include <boost/fusion/include/pop_front.hpp>#include <boost/fusion/include/reverse.hpp>#include <boost/fusion/include/single_view.hpp>#include <boost/fusion/include/transform_view.hpp>#include <boost/fusion/support/ext_/is_segmented.hpp>#include <boost/fusion/sequence/intrinsic/ext_/segments.hpp>#include <boost/fusion/sequence/intrinsic/ext_/size_s.hpp>#include <boost/fusion/view/ext_/segmented_iterator.hpp>#else#include <boost/spirit/fusion/sequence/is_sequence.hpp>#include <boost/spirit/fusion/sequence/begin.hpp>#include <boost/spirit/fusion/sequence/end.hpp>#include <boost/spirit/fusion/sequence/at.hpp>#include <boost/spirit/fusion/sequence/value_at.hpp>#include <boost/spirit/fusion/sequence/single_view.hpp>#include <boost/spirit/fusion/sequence/transform_view.hpp>#include <boost/xpressive/proto/detail/reverse.hpp>#include <boost/xpressive/proto/detail/pop_front.hpp>#endif#include <boost/xpressive/proto/proto_fwd.hpp>#include <boost/xpressive/proto/traits.hpp>#include <boost/xpressive/proto/eval.hpp>#include <boost/xpressive/proto/detail/suffix.hpp>#if BOOST_MSVC#pragma warning(push)#pragma warning(disable : 4510) // default constructor could not be generated#pragma warning(disable : 4512) // assignment operator could not be generated#pragma warning(disable : 4610) // can never be instantiated - user defined constructor required#endifnamespace boost { namespace proto{/// INTERNAL ONLY///#define UNREF(x) typename boost::remove_reference<x>::type    namespace detail    {        template<typename Expr, long Pos>        struct expr_iterator          : fusion::iterator_base<expr_iterator<Expr, Pos> >        {            typedef Expr expr_type;            BOOST_STATIC_CONSTANT(long, index = Pos);            BOOST_PROTO_DEFINE_FUSION_CATEGORY(fusion::random_access_traversal_tag)            BOOST_PROTO_DEFINE_FUSION_TAG(tag::proto_expr_iterator)            expr_iterator(Expr const &e)              : expr(e)            {}            Expr const &expr;        };        template<typename Expr>        struct flat_view        {            typedef Expr expr_type;            typedef typename Expr::proto_tag proto_tag;            BOOST_PROTO_DEFINE_FUSION_CATEGORY(fusion::forward_traversal_tag)            BOOST_PROTO_DEFINE_FUSION_TAG(tag::proto_flat_view)            explicit flat_view(Expr &expr)              : expr_(expr)            {}            Expr &expr_;        };        template<typename Tag>        struct as_element        {            template<typename Sig>            struct result;            template<typename This, typename Expr>            struct result<This(Expr)>              : mpl::if_<                    is_same<Tag, UNREF(Expr)::proto_tag>                  , flat_view<UNREF(Expr) const>                  , fusion::single_view<UNREF(Expr) const &>                >            {};            template<typename Expr>            typename result<as_element(Expr const &)>::type            operator ()(Expr const &expr) const            {                return typename result<as_element(Expr const &)>::type(expr);            }        };    }    namespace functional    {        /// \brief A PolymorphicFunctionObject type that returns a "flattened"        /// view of a Proto expression tree.        ///        /// A PolymorphicFunctionObject type that returns a "flattened"        /// view of a Proto expression tree. For a tree with a top-most node        /// tag of type \c T, the elements of the flattened sequence are        /// determined by recursing into each child node with the same        /// tag type and returning those nodes of different type. So for        /// instance, the Proto expression tree corresponding to the        /// expression <tt>a | b | c</tt> has a flattened view with elements        /// [a, b, c], even though the tree is grouped as        /// <tt>((a | b) | c)</tt>.        struct flatten        {            BOOST_PROTO_CALLABLE()            template<typename Sig>            struct result;            template<typename This, typename Expr>            struct result<This(Expr)>            {                typedef proto::detail::flat_view<UNREF(Expr) const> type;            };            template<typename Expr>            proto::detail::flat_view<Expr const> operator ()(Expr const &expr) const            {                return proto::detail::flat_view<Expr const>(expr);            }        };        /// \brief A PolymorphicFunctionObject type that invokes the        /// \c fusion::pop_front() algorithm on its argument.        ///        /// A PolymorphicFunctionObject type that invokes the        /// \c fusion::pop_front() algorithm on its argument. This is        /// useful for defining a CallableTransform like \c pop_front(_)        /// which removes the first child from a Proto expression node.        /// Such a transform might be used as the first argument to the        /// \c proto::transform::fold\<\> transform; that is, fold all but        /// the first child.        struct pop_front        {            BOOST_PROTO_CALLABLE()            template<typename Sig>            struct result;            template<typename This, typename Expr>            struct result<This(Expr)>            {                typedef                    typename fusion::BOOST_PROTO_FUSION_RESULT_OF::pop_front<UNREF(Expr) const>::type                type;            };            template<typename Expr>            typename fusion::BOOST_PROTO_FUSION_RESULT_OF::pop_front<Expr const>::type            operator ()(Expr const &expr) const            {                return fusion::pop_front(expr);            }        };        /// \brief A PolymorphicFunctionObject type that invokes the        /// \c fusion::reverse() algorithm on its argument.        ///        /// A PolymorphicFunctionObject type that invokes the        /// \c fusion::reverse() algorithm on its argument. This is        /// useful for defining a CallableTransform like \c reverse(_)        /// which reverses the order of the children of a Proto        /// expression node.        struct reverse        {            BOOST_PROTO_CALLABLE()            template<typename Sig>            struct result;            template<typename This, typename Expr>            struct result<This(Expr)>            {                typedef                    typename fusion::BOOST_PROTO_FUSION_RESULT_OF::reverse<UNREF(Expr) const>::type                type;            };            template<typename Expr>            typename fusion::BOOST_PROTO_FUSION_RESULT_OF::reverse<Expr const>::type            operator ()(Expr const &expr) const            {                return fusion::reverse(expr);            }        };    }    /// \brief A PolymorphicFunctionObject type that returns a "flattened"    /// view of a Proto expression tree.    ///    /// \sa boost::proto::functional::flatten    functional::flatten const flatten = {};    /// INTERNAL ONLY    ///    template<>    struct is_callable<functional::flatten>      : mpl::true_    {};    /// INTERNAL ONLY    ///    template<>    struct is_callable<functional::pop_front>      : mpl::true_    {};    /// INTERNAL ONLY    ///    template<>    struct is_callable<functional::reverse>      : mpl::true_    {};    /// INTERNAL ONLY    ///    template<typename Context>    struct eval_fun    {        explicit eval_fun(Context &ctx)          : ctx_(ctx)        {}        template<typename Sig>        struct result;        template<typename This, typename Expr>        struct result<This(Expr)>        {            typedef                typename proto::result_of::eval<UNREF(Expr), Context>::type            type;        };        template<typename Expr>        typename proto::result_of::eval<Expr, Context>::type        operator ()(Expr &expr) const        {            return proto::eval(expr, this->ctx_);        }    private:        Context &ctx_;    };}}// Don't bother emitting all this into the Doxygen-generated// reference section. It's enough to say that Proto expressions// are valid Fusion sequence without showing all this gunk.#ifndef BOOST_PROTO_DOXYGEN_INVOKEDnamespace boost { namespace fusion{    #if BOOST_VERSION < 103500    template<typename Tag, typename Args, long Arity>    struct is_sequence<proto::expr<Tag, Args, Arity> >      : mpl::true_    {};    template<typename Tag, typename Args, long Arity>    struct is_sequence<proto::expr<Tag, Args, Arity> const>      : mpl::true_    {};    #endif    namespace BOOST_PROTO_FUSION_EXTENSION    {        template<typename Tag>        struct is_view_impl;        template<>        struct is_view_impl<proto::tag::proto_flat_view>        {            template<typename Sequence>            struct apply              : mpl::true_            {};        };        template<>        struct is_view_impl<proto::tag::proto_expr>        {            template<typename Sequence>            struct apply              : mpl::false_            {};        };        template<typename Tag>        struct value_of_impl;        template<>        struct value_of_impl<proto::tag::proto_expr_iterator>        {            template<                typename Iterator              , typename Value = typename proto::result_of::arg_c<                    typename Iterator::expr_type                  , Iterator::index                >::wrapped_type

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品区一区二区三| 欧美日韩亚洲综合一区| 久久精品男人天堂av| 国产一区亚洲一区| 久久亚洲一区二区三区四区| 久久99在线观看| 久久人人超碰精品| 懂色av中文字幕一区二区三区| 国产精品美女久久久久久久久久久 | 久99久精品视频免费观看| 日韩美一区二区三区| 国产精品综合在线视频| 国产精品久久久久久亚洲毛片 | 国产精品青草综合久久久久99| 国产精品中文字幕欧美| 国产精品福利影院| 欧美综合一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 8x福利精品第一导航| 美女国产一区二区| 欧美极品少妇xxxxⅹ高跟鞋| 91原创在线视频| 奇米色777欧美一区二区| 久久蜜桃av一区精品变态类天堂| www.成人网.com| 天天综合色天天综合| 久久综合国产精品| 91成人看片片| 国产美女精品人人做人人爽 | 精品国精品自拍自在线| 成人国产精品视频| 亚洲成人动漫av| 欧美极品另类videosde| 欧美精品欧美精品系列| 国产成人av一区二区三区在线| 亚洲综合色丁香婷婷六月图片| 精品国产免费久久| 91福利区一区二区三区| 国产一区二区毛片| 亚洲一区影音先锋| 久久综合九色综合97_久久久| 色一情一乱一乱一91av| 精品中文字幕一区二区| 亚洲乱码国产乱码精品精可以看 | 亚洲天堂精品在线观看| 欧美一级精品在线| 一道本成人在线| 国产一区二区三区高清播放| a美女胸又www黄视频久久| 亚洲国产成人高清精品| 欧美激情中文不卡| 日韩精品一区二区三区swag | 国产一区二区三区免费看 | 免费成人你懂的| 一区二区三区欧美| 中文字幕在线观看一区二区| 欧美大片免费久久精品三p| 欧美午夜电影网| 99国产欧美另类久久久精品| 国产很黄免费观看久久| 免费在线观看成人| 午夜久久久影院| 亚洲一卡二卡三卡四卡无卡久久 | 日韩1区2区日韩1区2区| 亚洲精品中文在线观看| 日本一区二区三区免费乱视频 | 午夜精品福利一区二区三区av | 亚洲综合色自拍一区| 中文av字幕一区| 中文欧美字幕免费| 国产天堂亚洲国产碰碰| 久久亚洲二区三区| 日韩女优毛片在线| 日韩亚洲欧美综合| 日韩欧美中文字幕一区| 欧美一区二区三区啪啪| 欧美精品在线一区二区| 中文字幕一区二区三区四区| 国产精品天天摸av网| 欧美激情一区二区三区全黄| 国产精品网站导航| 亚洲色大成网站www久久九九| 国产精品久久久久影院| 国产精品久久久99| 亚洲色图制服丝袜| 一区二区三区四区亚洲| 亚洲成人一区二区在线观看| 天天操天天综合网| 久久狠狠亚洲综合| 国产精品一区二区三区四区| 岛国一区二区三区| 成人国产精品免费网站| 91国偷自产一区二区开放时间| 在线亚洲一区二区| 欧美高清一级片在线| 精品国精品自拍自在线| 国产亚洲va综合人人澡精品| 国产精品传媒视频| 亚洲图片欧美综合| 日韩不卡一二三区| 国产成人综合在线播放| 99久久精品久久久久久清纯| 欧美视频自拍偷拍| 欧美成人bangbros| 中文字幕av一区二区三区高| 亚洲精品老司机| 奇米影视在线99精品| 成人精品一区二区三区中文字幕| 91精彩视频在线| 欧美xxxxxxxx| ...av二区三区久久精品| 亚洲大尺度视频在线观看| 国模套图日韩精品一区二区| 91女人视频在线观看| 91.com视频| 亚洲人成人一区二区在线观看| 亚洲电影中文字幕在线观看| 久久99这里只有精品| 91影院在线免费观看| 日韩精品一区国产麻豆| 国产精品国产三级国产| 日本欧美加勒比视频| caoporm超碰国产精品| 91精品久久久久久久91蜜桃| 韩国精品主播一区二区在线观看| 成人国产精品免费观看视频| 欧美高清视频不卡网| 国产精品国产三级国产aⅴ无密码| 午夜一区二区三区视频| 成人午夜av影视| 日韩三级伦理片妻子的秘密按摩| 中文字幕中文字幕中文字幕亚洲无线| 日韩高清在线电影| 色综合视频在线观看| 国产日韩欧美不卡| 天天影视涩香欲综合网| 色综合久久天天综合网| 国产女主播一区| 美女www一区二区| 欧美私人免费视频| 中文字幕在线一区二区三区| 国产一区二区主播在线| 91精品国产福利在线观看| 亚洲免费高清视频在线| 高清在线观看日韩| 精品国产一区久久| 免费视频一区二区| 精品视频全国免费看| 日韩理论在线观看| 国产乱码精品1区2区3区| 欧美一区二区播放| 午夜精品久久久久久久| 91激情五月电影| 亚洲欧美区自拍先锋| 99久久免费精品| 久久精品免视看| 国产很黄免费观看久久| 精品福利av导航| 国内精品写真在线观看| 欧美成人aa大片| 国内久久婷婷综合| 久久综合成人精品亚洲另类欧美 | 欧洲av在线精品| 亚洲美女视频在线| 91视视频在线观看入口直接观看www| 国产欧美一区二区在线| 国产一区二区不卡在线| 久久精品视频在线看| 国产在线精品一区在线观看麻豆| 欧美电影免费观看高清完整版| 蜜桃一区二区三区在线观看| 91精品免费在线观看| 久久疯狂做爰流白浆xx| 精品欧美乱码久久久久久1区2区| 蜜乳av一区二区三区| 精品剧情在线观看| 国产一区91精品张津瑜| 国产精品午夜春色av| 91小视频在线| 亚洲综合一区二区精品导航| 欧美日韩午夜影院| 美国av一区二区| 久久久国产精华| 99re在线视频这里只有精品| 亚洲黄色免费网站| 8x8x8国产精品| 国产美女精品人人做人人爽| 国产精品国产自产拍高清av| 色欧美日韩亚洲| 亚洲国产cao| 2017欧美狠狠色| 99国产精品久久久久久久久久久| 亚洲一二三区在线观看| 91精品国产免费| 成人av电影免费在线播放| 一级女性全黄久久生活片免费| 91精品一区二区三区久久久久久| 狠狠色综合日日| 自拍视频在线观看一区二区| 欧美久久久一区|