mirror of
https://github.com/boostorg/static_assert.git
synced 2026-01-21 05:22:12 +00:00
Compare commits
3 Commits
boost-1.23
...
svn-branch
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b89281496e | ||
|
|
9074163b1e | ||
|
|
b776265f02 |
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user