invoker.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 133 行
HPP
133 行
// Copyright Daniel Wallin 2005. Use, modification and distribution is// subject to 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_PARAMETER_INVOKER_051210_HPP# define BOOST_PARAMETER_INVOKER_051210_HPP# include <boost/mpl/begin.hpp># include <boost/mpl/next.hpp># include <boost/mpl/deref.hpp># include <boost/mpl/size.hpp># include <boost/parameter/keyword.hpp># include <boost/preprocessor/iteration/iterate.hpp>namespace boost { namespace parameter { namespace python { namespace aux {template <long Arity, class M, class R, class Args>struct invoker;template <class M, class R>struct make_invoker{ template <class Args> struct apply { typedef invoker< mpl::size<Args>::value, M, R, Args > type; };};template <long Arity, class M, class R, class T, class Args>struct member_invoker;template <class M, class R, class T>struct make_member_invoker{ template <class Args> struct apply { typedef member_invoker< mpl::size<Args>::value, M, R, T, Args > type; };};template <long Arity, class T, class R, class Args>struct call_invoker;template <class T, class R>struct make_call_invoker{ template <class Args> struct apply { typedef call_invoker< mpl::size<Args>::value, T, R, Args > type; };};template <long Arity, class T, class Args>struct init_invoker;template <class T>struct make_init_invoker{ template <class Args> struct apply { typedef init_invoker< mpl::size<Args>::value, T, Args > type; };};template <class M, class R, class Args>struct invoker<0, M, R, Args>{ static R execute() { return M()(boost::type<R>()); }};template <class M, class R, class T, class Args>struct member_invoker<0, M, R, T, Args>{ static R execute(T& self) { return M()(boost::type<R>(), self); }};template <class T, class R, class Args>struct call_invoker<0, T, R, Args>{ static R execute(T& self) { return self(); }};template <class T, class Args>struct init_invoker<0, T, Args>{ static T* execute(T& self) { return new T; }};# define BOOST_PP_ITERATION_PARAMS_1 (4, \ (1, BOOST_PARAMETER_MAX_ARITY, <boost/parameter/aux_/python/invoker_iterate.hpp>, 1))# include BOOST_PP_ITERATE()# define BOOST_PP_ITERATION_PARAMS_1 (4, \ (1, BOOST_PARAMETER_MAX_ARITY, <boost/parameter/aux_/python/invoker_iterate.hpp>, 2))# include BOOST_PP_ITERATE()# define BOOST_PP_ITERATION_PARAMS_1 (4, \ (1, BOOST_PARAMETER_MAX_ARITY, <boost/parameter/aux_/python/invoker_iterate.hpp>, 3))# include BOOST_PP_ITERATE()# define BOOST_PP_ITERATION_PARAMS_1 (4, \ (1, BOOST_PARAMETER_MAX_ARITY, <boost/parameter/aux_/python/invoker_iterate.hpp>, 4))# include BOOST_PP_ITERATE()}}}} // namespace boost::parameter::python::aux#endif // BOOST_PARAMETER_INVOKER_051210_HPP
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?