Boost logo

Boost-Commit :

From: john_at_[hidden]
Date: 2008-04-01 13:53:57


Author: johnmaddock
Date: 2008-04-01 13:53:56 EDT (Tue, 01 Apr 2008)
New Revision: 43988
URL: http://svn.boost.org/trac/boost/changeset/43988

Log:
Changed BOOST_STATIC_ASSERT for GCC to suppress warnings about old C style casts.
Text files modified:
   trunk/boost/static_assert.hpp | 18 ++++++++++++++----
   1 files changed, 14 insertions(+), 4 deletions(-)

Modified: trunk/boost/static_assert.hpp
==============================================================================
--- trunk/boost/static_assert.hpp (original)
+++ trunk/boost/static_assert.hpp 2008-04-01 13:53:56 EDT (Tue, 01 Apr 2008)
@@ -28,6 +28,16 @@
 # define BOOST_SA_GCC_WORKAROUND
 #endif
 
+//
+// If the compiler issues warnings about old C style casts,
+// then enable this:
+//
+#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)))
+# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) == 0 ? false : true)
+#else
+# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
+#endif
+
 #ifdef BOOST_HAS_STATIC_ASSERT
 # define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
 #else
@@ -78,14 +88,14 @@
 #elif defined(BOOST_MSVC)
 #define BOOST_STATIC_ASSERT( B ) \
    typedef ::boost::static_assert_test<\
- sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)>\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST ( B ) >)>\
          BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
 #elif defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)
 // agurt 15/sep/02: a special care is needed to force Intel C++ issue an error
 // instead of warning in case of failure
 # define BOOST_STATIC_ASSERT( B ) \
     typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
- [ ::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >::value ]
+ [ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >::value ]
 #elif defined(__sgi)
 // special version for SGI MIPSpro compiler
 #define BOOST_STATIC_ASSERT( B ) \
@@ -100,12 +110,12 @@
 #define BOOST_STATIC_ASSERT( B ) \
    BOOST_STATIC_CONSTANT(int, \
      BOOST_JOIN(boost_static_assert_test_, __LINE__) = \
- sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) )
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >) )
 #else
 // generic version
 #define BOOST_STATIC_ASSERT( B ) \
    typedef ::boost::static_assert_test<\
- sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)>\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
          BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
 #endif
 


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