⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 if_else.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
字号:
/*=============================================================================    Copyright (c) 2001-2007 Joel de Guzman    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 PHOENIX_OPERATOR_IF_ELSE_HPP#define PHOENIX_OPERATOR_IF_ELSE_HPP#include <boost/mpl/and.hpp>#include <boost/mpl/if.hpp>#include <boost/type_traits/is_same.hpp>#include <boost/type_traits/is_reference.hpp>#include <boost/type_traits/remove_reference.hpp>#include <boost/spirit/home/phoenix/core/composite.hpp>#include <boost/spirit/home/phoenix/core/compose.hpp>#include <boost/spirit/home/phoenix/detail/type_deduction.hpp>namespace boost { namespace phoenix{    BOOST_BINARY_RESULT_OF(true ? x : y, result_of_if_else)    struct if_else_op_eval    {        template <            typename Env          , typename Cond          , typename Then          , typename Else        >        struct result        {            typedef typename Then::template result<Env>::type then_type;            typedef typename Else::template result<Env>::type else_type;            typedef typename                result_of_if_else<then_type, else_type>::type            ite_result;            // Note: c ? x : y can return an lvalue! Allow if_else_op_eval            // to return an lvalue IFF then_type and else_type are both lvalues            // with the same type.            typedef typename                mpl::if_<                    mpl::and_<                        is_same<then_type, else_type>                      , is_reference<then_type>                    >                  , ite_result                  , typename remove_reference<ite_result>::type                >::type            type;        };        template <            typename RT          , typename Env          , typename Cond          , typename Then          , typename Else        >        static RT        eval(Env const& env, Cond& cond, Then& then, Else& else_)        {            return cond.eval(env) ? then.eval(env) : else_.eval(env);        }    };    template <typename Cond, typename Then, typename Else>    inline actor<typename as_composite<if_else_op_eval, Cond, Then, Else>::type>    if_else(Cond const& cond, Then const& then, Else const& else_)    {        return compose<if_else_op_eval>(cond, then, else_);    }}}#endif

⌨️ 快捷键说明

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