binders.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 2,334 行 · 第 1/5 页

HPP
2,334
字号
>struct member_function_ptr_action<RT, ClassT,    A, B, C, D, E, F, nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 9    nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif#endif    nil_t   //  Unused> {    typedef RT result_type;    typedef RT(ClassT::*mf)(A, B, C, D, E, F);    typedef RT(ClassT::*cmf)(A, B, C, D, E, F) const;    typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type        mem_func_ptr_t;    template <typename CT,        typename A_, typename B_, typename C_, typename D_,        typename E_, typename F_    >    struct result { typedef result_type type; };    member_function_ptr_action(mem_func_ptr_t fptr_)    :   fptr(fptr_) {}    template <typename CT>    result_type operator()(CT& obj,        A a, B b, C c, D d, E e, F f    ) const    { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d, e, f); }    mem_func_ptr_t fptr;};//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F>inline member_function_ptr<RT, ClassT, A, B, C, D, E, F>bind(RT(ClassT::*fptr)(A, B, C, D, E, F)){    return member_function_ptr<        RT, ClassT, A, B, C, D, E, F>(fptr);}//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F>inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F>bind(RT(ClassT::*fptr)(A, B, C, D, E, F) const){    return member_function_ptr<        RT, ClassT const, A, B, C, D, E, F>(fptr);}///////////////////////////////////////////////////////////////////////////////////  Member function pointer binder (specialization for 7 args)/////////////////////////////////////////////////////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G>struct member_function_ptr_action<RT, ClassT,    A, B, C, D, E, F, G, nil_t, nil_t,#if PHOENIX_LIMIT > 9    nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif#endif    nil_t   //  Unused> {    typedef RT result_type;    typedef RT(ClassT::*mf)(A, B, C, D, E, F, G);    typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G) const;    typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type        mem_func_ptr_t;    template <typename CT,        typename A_, typename B_, typename C_, typename D_,        typename E_, typename F_, typename G_    >    struct result { typedef result_type type; };    member_function_ptr_action(mem_func_ptr_t fptr_)    :   fptr(fptr_) {}    template <typename CT>    result_type operator()(CT& obj,        A a, B b, C c, D d, E e, F f, G g    ) const    { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d, e, f, g); }    mem_func_ptr_t fptr;};//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G>inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G)){    return member_function_ptr<        RT, ClassT, A, B, C, D, E, F, G>(fptr);}//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G>inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G) const){    return member_function_ptr<        RT, ClassT const, A, B, C, D, E, F, G>(fptr);}///////////////////////////////////////////////////////////////////////////////////  Member function pointer binder (specialization for 8 args)/////////////////////////////////////////////////////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H>struct member_function_ptr_action<RT, ClassT,    A, B, C, D, E, F, G, H, nil_t,#if PHOENIX_LIMIT > 9    nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif#endif    nil_t   //  Unused> {    typedef RT result_type;    typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H);    typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H) const;    typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type        mem_func_ptr_t;    template <typename CT,        typename A_, typename B_, typename C_, typename D_,        typename E_, typename F_, typename G_, typename H_    >    struct result { typedef result_type type; };    member_function_ptr_action(mem_func_ptr_t fptr_)    :   fptr(fptr_) {}    template <typename CT>    result_type operator()(CT& obj,        A a, B b, C c, D d, E e, F f, G g, H h    ) const    { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d, e, f, g, h); }    mem_func_ptr_t fptr;};//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H>inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H)){    return member_function_ptr<        RT, ClassT, A, B, C, D, E, F, G, H>(fptr);}//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H>inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H) const){    return member_function_ptr<        RT, ClassT const, A, B, C, D, E, F, G, H>(fptr);}#if PHOENIX_LIMIT > 9///////////////////////////////////////////////////////////////////////////////////  Member function pointer binder (specialization for 9 args)/////////////////////////////////////////////////////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I>struct member_function_ptr_action<RT, ClassT,    A, B, C, D, E, F, G, H, I, nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif    nil_t   //  Unused> {    typedef RT result_type;    typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I);    typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I) const;    typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type        mem_func_ptr_t;    template <typename CT,        typename A_, typename B_, typename C_, typename D_,        typename E_, typename F_, typename G_, typename H_, typename I_    >    struct result { typedef result_type type; };    member_function_ptr_action(mem_func_ptr_t fptr_)    :   fptr(fptr_) {}    template <typename CT>    result_type operator()(CT& obj,        A a, B b, C c, D d, E e, F f, G g, H h, I i    ) const    { return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d, e, f, g, h, i); }    mem_func_ptr_t fptr;};//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I>inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I)){    return member_function_ptr<        RT, ClassT, A, B, C, D, E, F, G, H, I>(fptr);}//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I>inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H, I>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I) const){    return member_function_ptr<        RT, ClassT const, A, B, C, D, E, F, G, H, I>(fptr);}///////////////////////////////////////////////////////////////////////////////////  Member function pointer binder (specialization for 10 args)/////////////////////////////////////////////////////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I,    typename J>struct member_function_ptr_action<RT, ClassT,    A, B, C, D, E, F, G, H, I, J, nil_t, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif    nil_t   //  Unused> {    typedef RT result_type;    typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J);    typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J) const;    typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type        mem_func_ptr_t;    template <typename CT,        typename A_, typename B_, typename C_, typename D_,        typename E_, typename F_, typename G_, typename H_, typename I_,        typename J_    >    struct result { typedef result_type type; };    member_function_ptr_action(mem_func_ptr_t fptr_)    :   fptr(fptr_) {}    template <typename CT>    result_type operator()(CT& obj,        A a, B b, C c, D d, E e, F f, G g, H h, I i, J j    ) const    {        return (impl::as_ptr<CT>::get(obj)->*fptr)            (a, b, c, d, e, f, g, h, i, j);    }    mem_func_ptr_t fptr;};//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I,    typename J>inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I, J>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J)){    return member_function_ptr<        RT, ClassT, A, B, C, D, E, F, G, H, I, J>(fptr);}//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I,    typename J>inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H, I, J>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J) const){    return member_function_ptr<        RT, ClassT const, A, B, C, D, E, F, G, H, I, J>(fptr);}///////////////////////////////////////////////////////////////////////////////////  Member function pointer binder (specialization for 11 args)/////////////////////////////////////////////////////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I,    typename J, typename K>struct member_function_ptr_action<RT, ClassT,    A, B, C, D, E, F, G, H, I, J, K, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif    nil_t   //  Unused> {    typedef RT result_type;    typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K);    typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K) const;    typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type        mem_func_ptr_t;    template <typename CT,        typename A_, typename B_, typename C_, typename D_,        typename E_, typename F_, typename G_, typename H_, typename I_,        typename J_, typename K_    >    struct result { typedef result_type type; };    member_function_ptr_action(mem_func_ptr_t fptr_)    :   fptr(fptr_) {}    template <typename CT>    result_type operator()(CT& obj,        A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k    ) const    {        return (impl::as_ptr<CT>::get(obj)->*fptr)            (a, b, c, d, e, f, g, h, i, j, k);    }    mem_func_ptr_t fptr;};//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I,    typename J, typename K>inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K)){    return member_function_ptr<        RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>(fptr);}//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I,    typename J, typename K>inline member_function_ptr<RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K) const){    return member_function_ptr<        RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>(fptr);}#if PHOENIX_LIMIT > 12///////////////////////////////////////////////////////////////////////////////////  Member function pointer binder (specialization for 12 args)/////////////////////////////////////////////////////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I,    typename J, typename K, typename L>struct member_function_ptr_action<RT, ClassT,    A, B, C, D, E, F, G, H, I, J, K, L, nil_t, nil_t, nil_t, nil_t> {    typedef RT result_type;    typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L);    typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L) const;    typedef typename boost::mpl::if_<boost::is_const<ClassT>, cmf, mf>::type        mem_func_ptr_t;    template <typename CT,        typename A_, typename B_, typename C_, typename D_,        typename E_, typename F_, typename G_, typename H_, typename I_,        typename J_, typename K_, typename L_    >    struct result { typedef result_type type; };    member_function_ptr_action(mem_func_ptr_t fptr_)    :   fptr(fptr_) {}    template <typename CT>    result_type operator()(CT& obj,        A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l    ) const    {        return (impl::as_ptr<CT>::get(obj)->*fptr)            (a, b, c, d, e, f, g, h, i, j, k, l);    }    mem_func_ptr_t fptr;};//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I,    typename J, typename K, typename L>inline member_function_ptr<RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L)){    return member_function_ptr<        RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>(fptr);}//////////////////////////////////template <typename RT, typename ClassT,    typename A, typename B, typename C, typename D,    typename E, typename F, typename G, typename H, typename I,    typename J, typename

⌨️ 快捷键说明

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