1
0
forked from boostorg/bind

Eliminate mem_fn_template.hpp

This commit is contained in:
Peter Dimov
2024-01-04 19:51:50 +02:00
parent 506838badd
commit 5cef4e4f78
5 changed files with 218 additions and 438 deletions

View File

@@ -17,22 +17,18 @@
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class A1> class A1>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T>, typename _bi::list_av_1<A1>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1 );
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class A1> class A1>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T>, typename _bi::list_av_1<A1>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1 );
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
} }
// 1 // 1
@@ -40,23 +36,19 @@ template<class Rt2, class R, class T,
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B1,
class A1, class A2> class A1, class A2>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2 );
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B1,
class A1, class A2> class A1, class A2>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2 );
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
} }
// 2 // 2
@@ -64,23 +56,19 @@ template<class Rt2, class R, class T,
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B1, class B2,
class A1, class A2, class A3> class A1, class A2, class A3>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3 );
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B1, class B2,
class A1, class A2, class A3> class A1, class A2, class A3>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3 );
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
} }
// 3 // 3
@@ -88,23 +76,19 @@ template<class Rt2, class R, class T,
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B1, class B2, class B3,
class A1, class A2, class A3, class A4> class A1, class A2, class A3, class A4>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4 );
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B1, class B2, class B3,
class A1, class A2, class A3, class A4> class A1, class A2, class A3, class A4>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4 );
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
} }
// 4 // 4
@@ -112,23 +96,19 @@ template<class Rt2, class R, class T,
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4, class A5> class A1, class A2, class A3, class A4, class A5>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5 );
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4, class A5> class A1, class A2, class A3, class A4, class A5>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5 );
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
} }
// 5 // 5
@@ -136,23 +116,19 @@ template<class Rt2, class R, class T,
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5, class A6> class A1, class A2, class A3, class A4, class A5, class A6>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 );
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5, class A6> class A1, class A2, class A3, class A4, class A5, class A6>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 );
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
} }
// 6 // 6
@@ -160,23 +136,19 @@ template<class Rt2, class R, class T,
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6, class A7> class A1, class A2, class A3, class A4, class A5, class A6, class A7>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 );
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6, class A7> class A1, class A2, class A3, class A4, class A5, class A6, class A7>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 );
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
} }
// 7 // 7
@@ -184,23 +156,19 @@ template<class Rt2, class R, class T,
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 );
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 );
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
} }
// 8 // 8
@@ -208,21 +176,17 @@ template<class Rt2, class R, class T,
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 );
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> auto
BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; return boost::BOOST_BIND( boost::type<Rt2>(), boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 );
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
} }

View File

@@ -16,44 +16,36 @@
template<class R, class T, template<class R, class T,
class A1> class A1>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf)<R, T>, typename _bi::list_av_1<A1>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1 );
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
} }
template<class R, class T, template<class R, class T,
class A1> class A1>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T>, typename _bi::list_av_1<A1>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1 );
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class A1> class A1,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T>, typename _bi::list_av_1<A1>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () BOOST_BIND_MF_NOEXCEPT, A1 a1)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1 );
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class A1> class A1,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T>, typename _bi::list_av_1<A1>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const BOOST_BIND_MF_NOEXCEPT, A1 a1)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1 );
typedef typename _bi::list_av_1<A1>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
} }
// 1 // 1
@@ -61,47 +53,39 @@ template<class Rt2, class R, class T,
template<class R, class T, template<class R, class T,
class B1, class B1,
class A1, class A2> class A1, class A2>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2 );
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
} }
template<class R, class T, template<class R, class T,
class B1, class B1,
class A1, class A2> class A1, class A2>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2 );
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B1,
class A1, class A2> class A1, class A2,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2 );
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B1,
class A1, class A2> class A1, class A2,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2 );
typedef typename _bi::list_av_2<A1, A2>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
} }
// 2 // 2
@@ -109,47 +93,39 @@ template<class Rt2, class R, class T,
template<class R, class T, template<class R, class T,
class B1, class B2, class B1, class B2,
class A1, class A2, class A3> class A1, class A2, class A3>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3 );
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
} }
template<class R, class T, template<class R, class T,
class B1, class B2, class B1, class B2,
class A1, class A2, class A3> class A1, class A2, class A3>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3 );
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B1, class B2,
class A1, class A2, class A3> class A1, class A2, class A3,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3 );
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B1, class B2,
class A1, class A2, class A3> class A1, class A2, class A3,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3 );
typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
} }
// 3 // 3
@@ -157,47 +133,39 @@ template<class Rt2, class R, class T,
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B1, class B2, class B3,
class A1, class A2, class A3, class A4> class A1, class A2, class A3, class A4>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4 );
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
} }
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B1, class B2, class B3,
class A1, class A2, class A3, class A4> class A1, class A2, class A3, class A4>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4 );
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B1, class B2, class B3,
class A1, class A2, class A3, class A4> class A1, class A2, class A3, class A4,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4 );
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B1, class B2, class B3,
class A1, class A2, class A3, class A4> class A1, class A2, class A3, class A4,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4 );
typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
} }
// 4 // 4
@@ -205,47 +173,39 @@ template<class Rt2, class R, class T,
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B4, class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4, class A5> class A1, class A2, class A3, class A4, class A5>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5 );
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
} }
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B4, class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4, class A5> class A1, class A2, class A3, class A4, class A5>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5 );
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4, class A5> class A1, class A2, class A3, class A4, class A5,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5 );
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B1, class B2, class B3, class B4,
class A1, class A2, class A3, class A4, class A5> class A1, class A2, class A3, class A4, class A5,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5 );
typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
} }
// 5 // 5
@@ -253,47 +213,39 @@ template<class Rt2, class R, class T,
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5, class A6> class A1, class A2, class A3, class A4, class A5, class A6>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 );
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
} }
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5, class A6> class A1, class A2, class A3, class A4, class A5, class A6>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 );
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5, class A6> class A1, class A2, class A3, class A4, class A5, class A6,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 );
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B1, class B2, class B3, class B4, class B5,
class A1, class A2, class A3, class A4, class A5, class A6> class A1, class A2, class A3, class A4, class A5, class A6,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6 );
typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
} }
// 6 // 6
@@ -301,47 +253,39 @@ template<class Rt2, class R, class T,
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6, class A7> class A1, class A2, class A3, class A4, class A5, class A6, class A7>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 );
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
} }
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6, class A7> class A1, class A2, class A3, class A4, class A5, class A6, class A7>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 );
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6, class A7> class A1, class A2, class A3, class A4, class A5, class A6, class A7,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 );
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B1, class B2, class B3, class B4, class B5, class B6,
class A1, class A2, class A3, class A4, class A5, class A6, class A7> class A1, class A2, class A3, class A4, class A5, class A6, class A7,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7 );
typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
} }
// 7 // 7
@@ -349,47 +293,39 @@ template<class Rt2, class R, class T,
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 );
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
} }
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 );
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 );
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B1, class B2, class B3, class B4, class B5, class B6, class B7,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8 );
typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
} }
// 8 // 8
@@ -397,45 +333,37 @@ template<class Rt2, class R, class T,
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 );
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
} }
template<class R, class T, template<class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
_bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> auto
BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; return boost::BOOST_BIND( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 );
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(mf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 );
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
} }
template<class Rt2, class R, class T, template<class Rt2, class R, class T,
class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9,
typename boost::enable_if_c<!_bi::is_same<Rt2, R>::value, class En = typename std::enable_if< !std::is_same<Rt2, R>::value >::type>
_bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type> auto
>::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9) BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const BOOST_BIND_MF_NOEXCEPT, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
{ {
typedef _mfi::BOOST_BIND_MF_NAME(cmf)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F; return boost::BOOST_BIND<Rt2>( boost::mem_fn( f ), a1, a2, a3, a4, a5, a6, a7, a8, a9 );
typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
} }

View File

@@ -8,17 +8,16 @@
#endif #endif
// //
// mem_fn.hpp - a generalization of std::mem_fun[_ref] // mem_fn.hpp - a generalization of std::mem_fun[_ref]
// //
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. // Copyright 2001-2005, 2024 Peter Dimov
// Copyright (c) 2001 David Abrahams // Copyright 2001 David Abrahams
// Copyright (c) 2003-2005 Peter Dimov
// //
// Distributed under the Boost Software License, Version 1.0. (See // Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at // accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt) // http://www.boost.org/LICENSE_1_0.txt)
// //
// See http://www.boost.org/libs/bind/mem_fn.html for documentation. // See http://www.boost.org/libs/bind/mem_fn.html for documentation.
// //
#include <boost/get_pointer.hpp> #include <boost/get_pointer.hpp>
@@ -36,54 +35,55 @@ template<class T> struct remove_cvref: std::remove_cv< typename std::remove_refe
{ {
}; };
} // namespace _mfi template<class Pm, class R, class T, class... A> class mf
namespace _mfi
{ {
public:
#define BOOST_MEM_FN_NAME(X) X typedef R result_type;
#define BOOST_MEM_FN_CC
#include <boost/bind/mem_fn_template.hpp> private:
#undef BOOST_MEM_FN_CC Pm pm_;
#undef BOOST_MEM_FN_NAME
#if defined(BOOST_MEM_FN_ENABLE_CDECL) && !defined(_M_X64) public:
#define BOOST_MEM_FN_NAME(X) X##_cdecl mf( Pm pm ): pm_( pm ) {}
#define BOOST_MEM_FN_CC __cdecl
#include <boost/bind/mem_fn_template.hpp> template<class U,
class Ud = typename _mfi::remove_cvref<U>::type,
class En = typename std::enable_if<
std::is_same<T, Ud>::value || std::is_base_of<T, Ud>::value
>::type
>
#undef BOOST_MEM_FN_CC R operator()( U&& u, A... a ) const
#undef BOOST_MEM_FN_NAME {
return (std::forward<U>( u ).*pm_)( std::forward<A>( a )... );
}
#endif template<class U,
class Ud = typename _mfi::remove_cvref<U>::type,
class E1 = void,
class En = typename std::enable_if<
!(std::is_same<T, Ud>::value || std::is_base_of<T, Ud>::value)
>::type
>
#if defined(BOOST_MEM_FN_ENABLE_STDCALL) && !defined(_M_X64) R operator()( U&& u, A... a ) const
{
return (get_pointer( std::forward<U>( u ) )->*pm_)( std::forward<A>( a )... );
}
#define BOOST_MEM_FN_NAME(X) X##_stdcall bool operator==( mf const & rhs ) const
#define BOOST_MEM_FN_CC __stdcall {
return pm_ == rhs.pm_;
}
#include <boost/bind/mem_fn_template.hpp> bool operator!=( mf const & rhs ) const
{
#undef BOOST_MEM_FN_CC return pm_ != rhs.pm_;
#undef BOOST_MEM_FN_NAME }
};
#endif
#if defined(BOOST_MEM_FN_ENABLE_FASTCALL) && !defined(_M_X64)
#define BOOST_MEM_FN_NAME(X) X##_fastcall
#define BOOST_MEM_FN_CC __fastcall
#include <boost/bind/mem_fn_template.hpp>
#undef BOOST_MEM_FN_CC
#undef BOOST_MEM_FN_NAME
#endif
} // namespace _mfi } // namespace _mfi
@@ -166,7 +166,7 @@ private:
public: public:
explicit dm( Pm pm ): pm_( pm ) {} dm( Pm pm ): pm_( pm ) {}
template<class U, template<class U,
class Ud = typename _mfi::remove_cvref<U>::type, class Ud = typename _mfi::remove_cvref<U>::type,
@@ -222,9 +222,12 @@ public:
} // namespace _mfi } // namespace _mfi
template<class R, class T> _mfi::dm<R, T> mem_fn(R T::*f) template<class R, class T,
class E = typename std::enable_if< !std::is_function<R>::value >::type
>
_mfi::dm<R, T> mem_fn( R T::*pm )
{ {
return _mfi::dm<R, T>(f); return pm;
} }
} // namespace boost } // namespace boost

View File

@@ -12,12 +12,16 @@
// See http://www.boost.org/libs/bind/mem_fn.html for documentation. // See http://www.boost.org/libs/bind/mem_fn.html for documentation.
// //
template<class R, class T, class... A> _mfi::BOOST_MEM_FN_NAME(mf)<R, T, A...> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A...) BOOST_MEM_FN_NOEXCEPT) template<class R, class T, class... A>
_mfi::mf< R (BOOST_MEM_FN_CC T::*) (A...) BOOST_MEM_FN_NOEXCEPT, R, T, A... >
mem_fn( R (BOOST_MEM_FN_CC T::*pmf) (A...) BOOST_MEM_FN_NOEXCEPT )
{ {
return _mfi::BOOST_MEM_FN_NAME(mf)<R, T, A...>(f); return pmf;
} }
template<class R, class T, class... A> _mfi::BOOST_MEM_FN_NAME(cmf)<R, T, A...> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A...) const BOOST_MEM_FN_NOEXCEPT) template<class R, class T, class... A>
_mfi::mf< R (BOOST_MEM_FN_CC T::*) (A...) const BOOST_MEM_FN_NOEXCEPT, R, T, A... >
mem_fn( R (BOOST_MEM_FN_CC T::*pmf) (A...) const BOOST_MEM_FN_NOEXCEPT )
{ {
return _mfi::BOOST_MEM_FN_NAME(cmf)<R, T, A...>(f); return pmf;
} }

View File

@@ -1,119 +0,0 @@
//
// bind/mem_fn_template.hpp
//
// Do not include this header directly
//
// Copyright 2001, 2024 Peter Dimov
//
// 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)
//
// See http://www.boost.org/libs/bind/mem_fn.html for documentation.
//
// mf
template<class R, class T, class... A> class BOOST_MEM_FN_NAME(mf)
{
public:
typedef R result_type;
private:
typedef R (BOOST_MEM_FN_CC T::*Pm) (A...);
Pm pm_;
public:
explicit BOOST_MEM_FN_NAME(mf)( Pm pm ): pm_( pm ) {}
template<class U,
class Ud = typename _mfi::remove_cvref<U>::type,
class En = typename std::enable_if<
std::is_same<T, Ud>::value || std::is_base_of<T, Ud>::value
>::type
>
R operator()( U&& u, A... a ) const
{
return (std::forward<U>( u ).*pm_)( std::forward<A>( a )... );
}
template<class U,
class Ud = typename _mfi::remove_cvref<U>::type,
class E1 = void,
class En = typename std::enable_if<
!(std::is_same<T, Ud>::value || std::is_base_of<T, Ud>::value)
>::type
>
R operator()( U&& u, A... a ) const
{
return (get_pointer( std::forward<U>( u ) )->*pm_)( std::forward<A>( a )... );
}
bool operator==( BOOST_MEM_FN_NAME(mf) const & rhs ) const
{
return pm_ == rhs.pm_;
}
bool operator!=( BOOST_MEM_FN_NAME(mf) const & rhs ) const
{
return pm_ != rhs.pm_;
}
};
// cmf
template<class R, class T, class... A> class BOOST_MEM_FN_NAME(cmf)
{
public:
typedef R result_type;
private:
typedef R (BOOST_MEM_FN_CC T::*Pm) (A...) const;
Pm pm_;
public:
explicit BOOST_MEM_FN_NAME(cmf)( Pm pm ): pm_( pm ) {}
template<class U,
class Ud = typename _mfi::remove_cvref<U>::type,
class En = typename std::enable_if<
std::is_same<T, Ud>::value || std::is_base_of<T, Ud>::value
>::type
>
R operator()( U&& u, A... a ) const
{
return (std::forward<U>( u ).*pm_)( std::forward<A>( a )... );
}
template<class U,
class Ud = typename _mfi::remove_cvref<U>::type,
class E1 = void,
class En = typename std::enable_if<
!(std::is_same<T, Ud>::value || std::is_base_of<T, Ud>::value)
>::type
>
R operator()( U&& u, A... a ) const
{
return (get_pointer( std::forward<U>( u ) )->*pm_)( std::forward<A>( a )... );
}
bool operator==( BOOST_MEM_FN_NAME(cmf) const & rhs ) const
{
return pm_ == rhs.pm_;
}
bool operator!=( BOOST_MEM_FN_NAME(cmf) const & rhs ) const
{
return pm_ != rhs.pm_;
}
};