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_; }
|
||||||
|
|
||||||
|
A1 operator[] (arg<1> (*) ()) const { return a1_; }
|
||||||
|
|
||||||
template<class T> T & operator[] (value<T> & v) const { return v.get(); }
|
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(); }
|
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_; }
|
A1 operator[] (arg<1>) const { return a1_; }
|
||||||
A2 operator[] (arg<2>) const { return a2_; }
|
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 & operator[] (value<T> & v) const { return v.get(); }
|
||||||
|
|
||||||
template<class T> T const & operator[] (value<T> const & 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_; }
|
A2 operator[] (arg<2>) const { return a2_; }
|
||||||
A3 operator[] (arg<3>) const { return a3_; }
|
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 & operator[] (value<T> & v) const { return v.get(); }
|
||||||
|
|
||||||
template<class T> T const & operator[] (value<T> const & 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_; }
|
A3 operator[] (arg<3>) const { return a3_; }
|
||||||
A4 operator[] (arg<4>) const { return a4_; }
|
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 & operator[] (value<T> & v) const { return v.get(); }
|
||||||
|
|
||||||
template<class T> T const & operator[] (value<T> const & 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_; }
|
A4 operator[] (arg<4>) const { return a4_; }
|
||||||
A5 operator[] (arg<5>) const { return a5_; }
|
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 & operator[] (value<T> & v) const { return v.get(); }
|
||||||
|
|
||||||
template<class T> T const & operator[] (value<T> const & 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_; }
|
A5 operator[] (arg<5>) const { return a5_; }
|
||||||
A6 operator[] (arg<6>) const { return a6_; }
|
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 & operator[] (value<T> & v) const { return v.get(); }
|
||||||
|
|
||||||
template<class T> T const & operator[] (value<T> const & 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_; }
|
A6 operator[] (arg<6>) const { return a6_; }
|
||||||
A7 operator[] (arg<7>) const { return a7_; }
|
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 & operator[] (value<T> & v) const { return v.get(); }
|
||||||
|
|
||||||
template<class T> T const & operator[] (value<T> const & 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_; }
|
A7 operator[] (arg<7>) const { return a7_; }
|
||||||
A8 operator[] (arg<8>) const { return a8_; }
|
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 & operator[] (value<T> & v) const { return v.get(); }
|
||||||
|
|
||||||
template<class T> T const & operator[] (value<T> const & 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_; }
|
A8 operator[] (arg<8>) const { return a8_; }
|
||||||
A9 operator[] (arg<9>) const { return a9_; }
|
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 & operator[] (value<T> & v) const { return v.get(); }
|
||||||
|
|
||||||
template<class T> T const & operator[] (value<T> const & 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;
|
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> >
|
template<class R, class F, class L> struct add_value< bind_t<R, F, L> >
|
||||||
{
|
{
|
||||||
typedef bind_t<R, F, L> type;
|
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(value<T>);
|
||||||
template<class T> _avt_r1 _avt_f(reference_wrapper<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<int I> _avt_r1 _avt_f(arg<I> (*) ());
|
||||||
template<class R, class F, class L> _avt_r1 _avt_f(bind_t<R, F, L>);
|
template<class R, class F, class L> _avt_r1 _avt_f(bind_t<R, F, L>);
|
||||||
|
|
||||||
_avt_r2 _avt_f(...);
|
_avt_r2 _avt_f(...);
|
||||||
|
@@ -19,31 +19,20 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include <boost/bind/arg.hpp>
|
#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
|
namespace
|
||||||
{
|
{
|
||||||
|
|
||||||
BOOST_BIND_STATIC boost::arg<1> _1;
|
static inline boost::arg<1> _1() { return boost::arg<1>(); }
|
||||||
BOOST_BIND_STATIC boost::arg<2> _2;
|
static inline boost::arg<2> _2() { return boost::arg<2>(); }
|
||||||
BOOST_BIND_STATIC boost::arg<3> _3;
|
static inline boost::arg<3> _3() { return boost::arg<3>(); }
|
||||||
BOOST_BIND_STATIC boost::arg<4> _4;
|
static inline boost::arg<4> _4() { return boost::arg<4>(); }
|
||||||
BOOST_BIND_STATIC boost::arg<5> _5;
|
static inline boost::arg<5> _5() { return boost::arg<5>(); }
|
||||||
BOOST_BIND_STATIC boost::arg<6> _6;
|
static inline boost::arg<6> _6() { return boost::arg<6>(); }
|
||||||
BOOST_BIND_STATIC boost::arg<7> _7;
|
static inline boost::arg<7> _7() { return boost::arg<7>(); }
|
||||||
BOOST_BIND_STATIC boost::arg<8> _8;
|
static inline boost::arg<8> _8() { return boost::arg<8>(); }
|
||||||
BOOST_BIND_STATIC boost::arg<9> _9;
|
static inline boost::arg<9> _9() { return boost::arg<9>(); }
|
||||||
|
|
||||||
} // unnamed namespace
|
} // unnamed namespace
|
||||||
|
|
||||||
#undef BOOST_BIND_STATIC
|
|
||||||
|
|
||||||
#endif // #ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
|
#endif // #ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
|
||||||
|
Reference in New Issue
Block a user