forked from boostorg/bind
Placeholders are now inline functions to avoid data in headers (idea by Yitzhak Sapir)
[SVN r13128]
This commit is contained in:
@@ -146,6 +146,8 @@ public:
|
||||
|
||||
A1 operator[] (arg<1>) const { return a1_; }
|
||||
|
||||
A1 operator[] (arg<1> (*) ()) const { return a1_; }
|
||||
|
||||
template<class T> T & operator[] (value<T> & v) const { return v.get(); }
|
||||
|
||||
template<class T> T const & operator[] (value<T> const & v) const { return v.get(); }
|
||||
@@ -191,6 +193,9 @@ public:
|
||||
A1 operator[] (arg<1>) const { return a1_; }
|
||||
A2 operator[] (arg<2>) const { return a2_; }
|
||||
|
||||
A1 operator[] (arg<1> (*) ()) const { return a1_; }
|
||||
A2 operator[] (arg<2> (*) ()) const { return a2_; }
|
||||
|
||||
template<class T> T & operator[] (value<T> & v) const { return v.get(); }
|
||||
|
||||
template<class T> T const & operator[] (value<T> const & v) const { return v.get(); }
|
||||
@@ -239,6 +244,10 @@ public:
|
||||
A2 operator[] (arg<2>) const { return a2_; }
|
||||
A3 operator[] (arg<3>) const { return a3_; }
|
||||
|
||||
A1 operator[] (arg<1> (*) ()) const { return a1_; }
|
||||
A2 operator[] (arg<2> (*) ()) const { return a2_; }
|
||||
A3 operator[] (arg<3> (*) ()) const { return a3_; }
|
||||
|
||||
template<class T> T & operator[] (value<T> & v) const { return v.get(); }
|
||||
|
||||
template<class T> T const & operator[] (value<T> const & v) const { return v.get(); }
|
||||
@@ -290,6 +299,11 @@ public:
|
||||
A3 operator[] (arg<3>) const { return a3_; }
|
||||
A4 operator[] (arg<4>) const { return a4_; }
|
||||
|
||||
A1 operator[] (arg<1> (*) ()) const { return a1_; }
|
||||
A2 operator[] (arg<2> (*) ()) const { return a2_; }
|
||||
A3 operator[] (arg<3> (*) ()) const { return a3_; }
|
||||
A4 operator[] (arg<4> (*) ()) const { return a4_; }
|
||||
|
||||
template<class T> T & operator[] (value<T> & v) const { return v.get(); }
|
||||
|
||||
template<class T> T const & operator[] (value<T> const & v) const { return v.get(); }
|
||||
@@ -344,6 +358,12 @@ public:
|
||||
A4 operator[] (arg<4>) const { return a4_; }
|
||||
A5 operator[] (arg<5>) const { return a5_; }
|
||||
|
||||
A1 operator[] (arg<1> (*) ()) const { return a1_; }
|
||||
A2 operator[] (arg<2> (*) ()) const { return a2_; }
|
||||
A3 operator[] (arg<3> (*) ()) const { return a3_; }
|
||||
A4 operator[] (arg<4> (*) ()) const { return a4_; }
|
||||
A5 operator[] (arg<5> (*) ()) const { return a5_; }
|
||||
|
||||
template<class T> T & operator[] (value<T> & v) const { return v.get(); }
|
||||
|
||||
template<class T> T const & operator[] (value<T> const & v) const { return v.get(); }
|
||||
@@ -401,6 +421,13 @@ public:
|
||||
A5 operator[] (arg<5>) const { return a5_; }
|
||||
A6 operator[] (arg<6>) const { return a6_; }
|
||||
|
||||
A1 operator[] (arg<1> (*) ()) const { return a1_; }
|
||||
A2 operator[] (arg<2> (*) ()) const { return a2_; }
|
||||
A3 operator[] (arg<3> (*) ()) const { return a3_; }
|
||||
A4 operator[] (arg<4> (*) ()) const { return a4_; }
|
||||
A5 operator[] (arg<5> (*) ()) const { return a5_; }
|
||||
A6 operator[] (arg<6> (*) ()) const { return a6_; }
|
||||
|
||||
template<class T> T & operator[] (value<T> & v) const { return v.get(); }
|
||||
|
||||
template<class T> T const & operator[] (value<T> const & v) const { return v.get(); }
|
||||
@@ -461,6 +488,14 @@ public:
|
||||
A6 operator[] (arg<6>) const { return a6_; }
|
||||
A7 operator[] (arg<7>) const { return a7_; }
|
||||
|
||||
A1 operator[] (arg<1> (*) ()) const { return a1_; }
|
||||
A2 operator[] (arg<2> (*) ()) const { return a2_; }
|
||||
A3 operator[] (arg<3> (*) ()) const { return a3_; }
|
||||
A4 operator[] (arg<4> (*) ()) const { return a4_; }
|
||||
A5 operator[] (arg<5> (*) ()) const { return a5_; }
|
||||
A6 operator[] (arg<6> (*) ()) const { return a6_; }
|
||||
A7 operator[] (arg<7> (*) ()) const { return a7_; }
|
||||
|
||||
template<class T> T & operator[] (value<T> & v) const { return v.get(); }
|
||||
|
||||
template<class T> T const & operator[] (value<T> const & v) const { return v.get(); }
|
||||
@@ -524,6 +559,15 @@ public:
|
||||
A7 operator[] (arg<7>) const { return a7_; }
|
||||
A8 operator[] (arg<8>) const { return a8_; }
|
||||
|
||||
A1 operator[] (arg<1> (*) ()) const { return a1_; }
|
||||
A2 operator[] (arg<2> (*) ()) const { return a2_; }
|
||||
A3 operator[] (arg<3> (*) ()) const { return a3_; }
|
||||
A4 operator[] (arg<4> (*) ()) const { return a4_; }
|
||||
A5 operator[] (arg<5> (*) ()) const { return a5_; }
|
||||
A6 operator[] (arg<6> (*) ()) const { return a6_; }
|
||||
A7 operator[] (arg<7> (*) ()) const { return a7_; }
|
||||
A8 operator[] (arg<8> (*) ()) const { return a8_; }
|
||||
|
||||
template<class T> T & operator[] (value<T> & v) const { return v.get(); }
|
||||
|
||||
template<class T> T const & operator[] (value<T> const & v) const { return v.get(); }
|
||||
@@ -590,6 +634,16 @@ public:
|
||||
A8 operator[] (arg<8>) const { return a8_; }
|
||||
A9 operator[] (arg<9>) const { return a9_; }
|
||||
|
||||
A1 operator[] (arg<1> (*) ()) const { return a1_; }
|
||||
A2 operator[] (arg<2> (*) ()) const { return a2_; }
|
||||
A3 operator[] (arg<3> (*) ()) const { return a3_; }
|
||||
A4 operator[] (arg<4> (*) ()) const { return a4_; }
|
||||
A5 operator[] (arg<5> (*) ()) const { return a5_; }
|
||||
A6 operator[] (arg<6> (*) ()) const { return a6_; }
|
||||
A7 operator[] (arg<7> (*) ()) const { return a7_; }
|
||||
A8 operator[] (arg<8> (*) ()) const { return a8_; }
|
||||
A9 operator[] (arg<9> (*) ()) const { return a9_; }
|
||||
|
||||
template<class T> T & operator[] (value<T> & v) const { return v.get(); }
|
||||
|
||||
template<class T> T const & operator[] (value<T> const & v) const { return v.get(); }
|
||||
@@ -916,6 +970,11 @@ template<int I> struct add_value< arg<I> >
|
||||
typedef arg<I> type;
|
||||
};
|
||||
|
||||
template<int I> struct add_value< arg<I> (*) () >
|
||||
{
|
||||
typedef arg<I> (*type) ();
|
||||
};
|
||||
|
||||
template<class R, class F, class L> struct add_value< bind_t<R, F, L> >
|
||||
{
|
||||
typedef bind_t<R, F, L> type;
|
||||
@@ -947,6 +1006,7 @@ typedef char (&_avt_r2) [2];
|
||||
template<class T> _avt_r1 _avt_f(value<T>);
|
||||
template<class T> _avt_r1 _avt_f(reference_wrapper<T>);
|
||||
template<int I> _avt_r1 _avt_f(arg<I>);
|
||||
template<int I> _avt_r1 _avt_f(arg<I> (*) ());
|
||||
template<class R, class F, class L> _avt_r1 _avt_f(bind_t<R, F, L>);
|
||||
|
||||
_avt_r2 _avt_f(...);
|
||||
|
@@ -19,31 +19,20 @@
|
||||
//
|
||||
|
||||
#include <boost/bind/arg.hpp>
|
||||
#include <boost/config.hpp>
|
||||
|
||||
// With MSVC precompiled headers, unnamed namespaces are not unique
|
||||
|
||||
#ifdef BOOST_MSVC
|
||||
# define BOOST_BIND_STATIC static
|
||||
#else
|
||||
# define BOOST_BIND_STATIC
|
||||
#endif
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
BOOST_BIND_STATIC boost::arg<1> _1;
|
||||
BOOST_BIND_STATIC boost::arg<2> _2;
|
||||
BOOST_BIND_STATIC boost::arg<3> _3;
|
||||
BOOST_BIND_STATIC boost::arg<4> _4;
|
||||
BOOST_BIND_STATIC boost::arg<5> _5;
|
||||
BOOST_BIND_STATIC boost::arg<6> _6;
|
||||
BOOST_BIND_STATIC boost::arg<7> _7;
|
||||
BOOST_BIND_STATIC boost::arg<8> _8;
|
||||
BOOST_BIND_STATIC boost::arg<9> _9;
|
||||
static inline boost::arg<1> _1() { return boost::arg<1>(); }
|
||||
static inline boost::arg<2> _2() { return boost::arg<2>(); }
|
||||
static inline boost::arg<3> _3() { return boost::arg<3>(); }
|
||||
static inline boost::arg<4> _4() { return boost::arg<4>(); }
|
||||
static inline boost::arg<5> _5() { return boost::arg<5>(); }
|
||||
static inline boost::arg<6> _6() { return boost::arg<6>(); }
|
||||
static inline boost::arg<7> _7() { return boost::arg<7>(); }
|
||||
static inline boost::arg<8> _8() { return boost::arg<8>(); }
|
||||
static inline boost::arg<9> _9() { return boost::arg<9>(); }
|
||||
|
||||
} // unnamed namespace
|
||||
|
||||
#undef BOOST_BIND_STATIC
|
||||
|
||||
#endif // #ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
|
||||
|
Reference in New Issue
Block a user