Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r58093 - in trunk: boost/bind libs/bind/test
From: pdimov_at_[hidden]
Date: 2009-12-02 05:47:01


Author: pdimov
Date: 2009-12-02 05:47:01 EST (Wed, 02 Dec 2009)
New Revision: 58093
URL: http://svn.boost.org/trac/boost/changeset/58093

Log:
Fix Borland regression. Refs #3003.
Text files modified:
   trunk/boost/bind/mem_fn_template.hpp | 81 ++++++++++++++++++++++++++-------------
   trunk/libs/bind/test/mem_fn_unary_addr_test.cpp | 10 ++++
   2 files changed, 64 insertions(+), 27 deletions(-)

Modified: trunk/boost/bind/mem_fn_template.hpp
==============================================================================
--- trunk/boost/bind/mem_fn_template.hpp (original)
+++ trunk/boost/bind/mem_fn_template.hpp 2009-12-02 05:47:01 EST (Wed, 02 Dec 2009)
@@ -51,14 +51,16 @@
 
     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
 
     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
@@ -109,7 +111,8 @@
 
     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
@@ -164,14 +167,16 @@
 
     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
 
     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
@@ -223,7 +228,8 @@
 
     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
@@ -276,14 +282,16 @@
 
     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
 
     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
@@ -333,7 +341,8 @@
 
     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
@@ -386,14 +395,16 @@
 
     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
 
     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
@@ -443,7 +454,8 @@
 
     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
@@ -496,14 +508,16 @@
 
     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
 
     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
@@ -553,7 +567,8 @@
 
     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
@@ -606,14 +621,16 @@
 
     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
 
     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
@@ -663,7 +680,8 @@
 
     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
@@ -716,14 +734,16 @@
 
     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
 
     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
@@ -773,7 +793,8 @@
 
     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
@@ -826,14 +847,16 @@
 
     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
 
     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
@@ -883,7 +906,8 @@
 
     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
@@ -936,14 +960,16 @@
 
     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
 
     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
@@ -998,7 +1024,8 @@
 
     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

Modified: trunk/libs/bind/test/mem_fn_unary_addr_test.cpp
==============================================================================
--- trunk/libs/bind/test/mem_fn_unary_addr_test.cpp (original)
+++ trunk/libs/bind/test/mem_fn_unary_addr_test.cpp 2009-12-02 05:47:01 EST (Wed, 02 Dec 2009)
@@ -1,4 +1,5 @@
 #include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
 
 #if defined(BOOST_MSVC)
 #pragma warning(disable: 4786) // identifier truncated in debug info
@@ -82,11 +83,20 @@
     }
 };
 
+#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x620 ) )
+namespace boost
+{
+#endif
+
 template<class T> T * get_pointer( Y< T > const & y )
 {
     return y.get();
 }
 
+#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x620 ) )
+} // namespace boost
+#endif
+
 int detect_errors(bool x)
 {
     if( x )


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk