Compare commits

..

3 Commits

Author SHA1 Message Date
John Maddock
b89281496e Updated version number, modified static_assert to use BOOST_JOIN rather than it's own version
[SVN r11079]
2001-09-09 10:05:54 +00:00
nobody
9074163b1e This commit was manufactured by cvs2svn to create branch 'split-config'.
[SVN r10742]
2001-08-04 14:31:38 +00:00
John Maddock
b776265f02 Tweeked so that test fails under VC6 (it should due to a compiler bug).
[SVN r10612]
2001-07-14 11:18:31 +00:00
2 changed files with 3 additions and 16 deletions

View File

@@ -62,7 +62,7 @@ template<int x> struct static_assert_test{};
#define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)>\
BOOST_ASSERT_JOIN(boost_static_assert_typedef_, __LINE__)
BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
#else
// __LINE__ macro broken when -ZI is used see Q199057
// fortunately MSVC ignores duplicate typedef's.
@@ -74,19 +74,10 @@ template<int x> struct static_assert_test{};
#else
// alternative enum based implementation:
#define BOOST_STATIC_ASSERT( B ) \
enum { BOOST_ASSERT_JOIN(boost_static_assert_enum_, __LINE__) \
enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
= sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) }
#endif
//
// The following piece of macro magic joins the two
// arguments together, even when one of the arguments is
// itself a macro (see 16.3.1 in C++ standard). The key
// is that macro expansion of macro arguments does not
// occur in BOOST_DO_ASSERT_JOIN but does in BOOST_ASSERT_JOIN
// provided it is called from within another macro.
#define BOOST_ASSERT_JOIN( X, Y ) BOOST_DO_ASSERT_JOIN( X, Y )
#define BOOST_DO_ASSERT_JOIN( X, Y ) X##Y
#endif // BOOST_STATIC_ASSERT_HPP

View File

@@ -13,10 +13,6 @@
// all these tests should fail:
//
#ifdef BOOST_MSVC
#error "VC6 not supported in this test (buggy compiler problem)"
#endif
struct Bob
{
@@ -27,7 +23,7 @@ struct Bob
char c;
int f()
{
#ifndef _MSC_VER // broken sizeof in VC6
#ifndef BOOST_MSVC // broken sizeof in VC6
BOOST_STATIC_ASSERT(sizeof(x) == 4);
BOOST_STATIC_ASSERT(sizeof(c) == 1);
BOOST_STATIC_ASSERT((sizeof(x) == sizeof(c))); // should not compile