1
0
forked from boostorg/bind

Fix Borland regression. Refs #3003.

[SVN r58093]
This commit is contained in:
Peter Dimov
2009-12-02 10:47:01 +00:00
parent e5d99ce085
commit 1bf8cd6c7a
2 changed files with 64 additions and 27 deletions

View File

@@ -51,14 +51,16 @@ public:
template<class U> R operator()(U & u) const template<class U> R operator()(U & u) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 )); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p);
} }
#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
template<class U> R operator()(U const & u) const template<class U> R operator()(U const & u) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 )); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p);
} }
#endif #endif
@@ -109,7 +111,8 @@ public:
template<class U> R operator()(U const & u) const template<class U> R operator()(U const & u) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 )); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p);
} }
R operator()(T const & t) const R operator()(T const & t) const
@@ -164,14 +167,16 @@ public:
template<class U> R operator()(U & u, A1 a1) const template<class U> R operator()(U & u, A1 a1) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1);
} }
#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
template<class U> R operator()(U const & u, A1 a1) const template<class U> R operator()(U const & u, A1 a1) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1);
} }
#endif #endif
@@ -223,7 +228,8 @@ public:
template<class U> R operator()(U const & u, A1 a1) const template<class U> R operator()(U const & u, A1 a1) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1);
} }
R operator()(T const & t, A1 a1) const R operator()(T const & t, A1 a1) const
@@ -276,14 +282,16 @@ public:
template<class U> R operator()(U & u, A1 a1, A2 a2) const template<class U> R operator()(U & u, A1 a1, A2 a2) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2);
} }
#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
template<class U> R operator()(U const & u, A1 a1, A2 a2) const template<class U> R operator()(U const & u, A1 a1, A2 a2) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2);
} }
#endif #endif
@@ -333,7 +341,8 @@ public:
template<class U> R operator()(U const & u, A1 a1, A2 a2) const template<class U> R operator()(U const & u, A1 a1, A2 a2) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2);
} }
R operator()(T const & t, A1 a1, A2 a2) const R operator()(T const & t, A1 a1, A2 a2) const
@@ -386,14 +395,16 @@ public:
template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3) const template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3);
} }
#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3);
} }
#endif #endif
@@ -443,7 +454,8 @@ public:
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3);
} }
R operator()(T const & t, A1 a1, A2 a2, A3 a3) const R operator()(T const & t, A1 a1, A2 a2, A3 a3) const
@@ -496,14 +508,16 @@ public:
template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4);
} }
#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4);
} }
#endif #endif
@@ -553,7 +567,8 @@ public:
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4);
} }
R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const
@@ -606,14 +621,16 @@ public:
template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5);
} }
#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5);
} }
#endif #endif
@@ -663,7 +680,8 @@ public:
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5);
} }
R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
@@ -716,14 +734,16 @@ public:
template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5, a6); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6);
} }
#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5, a6); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6);
} }
#endif #endif
@@ -773,7 +793,8 @@ public:
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5, a6); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6);
} }
R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
@@ -826,14 +847,16 @@ public:
template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5, a6, a7); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7);
} }
#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5, a6, a7); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7);
} }
#endif #endif
@@ -883,7 +906,8 @@ public:
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5, a6, a7); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7);
} }
R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
@@ -936,14 +960,16 @@ public:
template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5, a6, a7, a8); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8);
} }
#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5, a6, a7, a8); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8);
} }
#endif #endif
@@ -998,7 +1024,8 @@ public:
template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
{ {
BOOST_MEM_FN_RETURN call(u, static_cast< U const * >( 0 ), a1, a2, a3, a4, a5, a6, a7, a8); U const * p = 0;
BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8);
} }
R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const

View File

@@ -1,4 +1,5 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
#if defined(BOOST_MSVC) #if defined(BOOST_MSVC)
#pragma warning(disable: 4786) // identifier truncated in debug info #pragma warning(disable: 4786) // identifier truncated in debug info
@@ -82,11 +83,20 @@ public:
} }
}; };
#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x620 ) )
namespace boost
{
#endif
template<class T> T * get_pointer( Y< T > const & y ) template<class T> T * get_pointer( Y< T > const & y )
{ {
return y.get(); return y.get();
} }
#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x620 ) )
} // namespace boost
#endif
int detect_errors(bool x) int detect_errors(bool x)
{ {
if( x ) if( x )