Merge changes from Trunk.

[SVN r47306]
This commit is contained in:
John Maddock
2008-07-11 10:49:31 +00:00
parent 481c2efbac
commit 28e09a3cca

View File

@ -28,6 +28,16 @@
# define BOOST_SA_GCC_WORKAROUND # define BOOST_SA_GCC_WORKAROUND
#endif #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 #ifdef BOOST_HAS_STATIC_ASSERT
# define BOOST_STATIC_ASSERT( B ) static_assert(B, #B) # define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
#else #else
@ -78,14 +88,14 @@ template<int x> struct static_assert_test{};
#elif defined(BOOST_MSVC) #elif defined(BOOST_MSVC)
#define BOOST_STATIC_ASSERT( B ) \ #define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\ 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__) BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
#elif defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND) #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 // agurt 15/sep/02: a special care is needed to force Intel C++ issue an error
// instead of warning in case of failure // instead of warning in case of failure
# define BOOST_STATIC_ASSERT( B ) \ # define BOOST_STATIC_ASSERT( B ) \
typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \ 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) #elif defined(__sgi)
// special version for SGI MIPSpro compiler // special version for SGI MIPSpro compiler
#define BOOST_STATIC_ASSERT( B ) \ #define BOOST_STATIC_ASSERT( B ) \
@ -100,12 +110,12 @@ template<int x> struct static_assert_test{};
#define BOOST_STATIC_ASSERT( B ) \ #define BOOST_STATIC_ASSERT( B ) \
BOOST_STATIC_CONSTANT(int, \ BOOST_STATIC_CONSTANT(int, \
BOOST_JOIN(boost_static_assert_test_, __LINE__) = \ 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 #else
// generic version // generic version
#define BOOST_STATIC_ASSERT( B ) \ #define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\ 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__) BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
#endif #endif