lambda_no_ctps.hpp

来自「CGAL is a collaborative effort of severa」· HPP 代码 · 共 229 行

HPP
229
字号
// Copyright Aleksey Gurtovoy 2000-2004//// 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)//// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header// -- DO NOT modify by hand!namespace boost { namespace mpl {namespace aux {template<      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false    , bool C5 = false    >struct lambda_or    : true_{};template<>struct lambda_or< false,false,false,false,false >    : false_{};template< typename Arity > struct lambda_impl{    template< typename T, typename Tag, typename Protect > struct result_    {        typedef T type;        typedef is_placeholder<T> is_le;    };};template<> struct lambda_impl< int_<1> >{    template< typename F, typename Tag, typename Protect > struct result_    {        typedef lambda< typename F::arg1, Tag, false_ > l1;        typedef typename l1::is_le is_le1;        typedef aux::lambda_or<              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value            > is_le;        typedef bind1<              typename F::rebind            , typename l1::type            > bind_;        typedef typename if_<              is_le            , if_< Protect, mpl::protect<bind_>, bind_ >            , identity<F>            >::type type_;        typedef typename type_::type type;    };};template<> struct lambda_impl< int_<2> >{    template< typename F, typename Tag, typename Protect > struct result_    {        typedef lambda< typename F::arg1, Tag, false_ > l1;        typedef lambda< typename F::arg2, Tag, false_ > l2;                typedef typename l1::is_le is_le1;        typedef typename l2::is_le is_le2;                typedef aux::lambda_or<              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value            > is_le;        typedef bind2<              typename F::rebind            , typename l1::type, typename l2::type            > bind_;        typedef typename if_<              is_le            , if_< Protect, mpl::protect<bind_>, bind_ >            , identity<F>            >::type type_;        typedef typename type_::type type;    };};template<> struct lambda_impl< int_<3> >{    template< typename F, typename Tag, typename Protect > struct result_    {        typedef lambda< typename F::arg1, Tag, false_ > l1;        typedef lambda< typename F::arg2, Tag, false_ > l2;        typedef lambda< typename F::arg3, Tag, false_ > l3;                typedef typename l1::is_le is_le1;        typedef typename l2::is_le is_le2;        typedef typename l3::is_le is_le3;                typedef aux::lambda_or<              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value            > is_le;        typedef bind3<              typename F::rebind            , typename l1::type, typename l2::type, typename l3::type            > bind_;        typedef typename if_<              is_le            , if_< Protect, mpl::protect<bind_>, bind_ >            , identity<F>            >::type type_;        typedef typename type_::type type;    };};template<> struct lambda_impl< int_<4> >{    template< typename F, typename Tag, typename Protect > struct result_    {        typedef lambda< typename F::arg1, Tag, false_ > l1;        typedef lambda< typename F::arg2, Tag, false_ > l2;        typedef lambda< typename F::arg3, Tag, false_ > l3;        typedef lambda< typename F::arg4, Tag, false_ > l4;                typedef typename l1::is_le is_le1;        typedef typename l2::is_le is_le2;        typedef typename l3::is_le is_le3;        typedef typename l4::is_le is_le4;                typedef aux::lambda_or<              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value            > is_le;        typedef bind4<              typename F::rebind            , typename l1::type, typename l2::type, typename l3::type            , typename l4::type            > bind_;        typedef typename if_<              is_le            , if_< Protect, mpl::protect<bind_>, bind_ >            , identity<F>            >::type type_;        typedef typename type_::type type;    };};template<> struct lambda_impl< int_<5> >{    template< typename F, typename Tag, typename Protect > struct result_    {        typedef lambda< typename F::arg1, Tag, false_ > l1;        typedef lambda< typename F::arg2, Tag, false_ > l2;        typedef lambda< typename F::arg3, Tag, false_ > l3;        typedef lambda< typename F::arg4, Tag, false_ > l4;        typedef lambda< typename F::arg5, Tag, false_ > l5;                typedef typename l1::is_le is_le1;        typedef typename l2::is_le is_le2;        typedef typename l3::is_le is_le3;        typedef typename l4::is_le is_le4;        typedef typename l5::is_le is_le5;                typedef aux::lambda_or<              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value            > is_le;        typedef bind5<              typename F::rebind            , typename l1::type, typename l2::type, typename l3::type            , typename l4::type, typename l5::type            > bind_;        typedef typename if_<              is_le            , if_< Protect, mpl::protect<bind_>, bind_ >            , identity<F>            >::type type_;        typedef typename type_::type type;    };};} // namespace auxtemplate<      typename T    , typename Tag    , typename Protect    >struct lambda{    /// Metafunction forwarding confuses MSVC 6.x    typedef typename aux::template_arity<T>::type arity_;    typedef typename aux::lambda_impl<arity_>        ::template result_< T,Tag,Protect > l_;    typedef typename l_::type type;    typedef typename l_::is_le is_le;};BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)template<      typename T    >struct is_lambda_expression    : lambda<T>::is_le{};}}

⌨️ 快捷键说明

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