📄 binders.hpp
字号:
mem_func_ptr_t;
template <typename CT,
typename A_, typename B_, typename C_, typename D_,
typename E_
>
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
) const
{ return (impl::as_ptr<CT>::get(obj)->*fptr)(a, b, c, d, e); }
mem_func_ptr_t fptr;
};
//////////////////////////////////
template <typename RT, typename ClassT,
typename A, typename B, typename C, typename D,
typename E
>
inline member_function_ptr<RT, ClassT, A, B, C, D, E>
bind(RT(ClassT::*fptr)(A, B, C, D, E))
{
return member_function_ptr<
RT, ClassT, A, B, C, D, E>(fptr);
}
//////////////////////////////////
template <typename RT, typename ClassT,
typename A, typename B, typename C, typename D,
typename E
>
inline member_function_ptr<RT, ClassT const, A, B, C, D, E>
bind(RT(ClassT::*fptr)(A, B, C, D, E) const)
{
return member_function_ptr<
RT, ClassT const, A, B, C, D, E>(fptr);
}
#if PHOENIX_LIMIT > 6
///////////////////////////////////////////////////////////////////////////////
//
// Member function pointer binder (specialization for 6 args)
//
///////////////////////////////////////////////////////////////////////////////
template <typename RT, typename ClassT,
typename A, typename B, typename C, typename D,
typename E, typename F
>
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(Cla
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -