mirror of
https://github.com/boostorg/static_assert.git
synced 2025-07-14 05:06:33 +02:00
Compare commits
1 Commits
boost-1.25
...
svn-branch
Author | SHA1 | Date | |
---|---|---|---|
9a7a7d05b9 |
16
Jamfile
16
Jamfile
@ -1,16 +0,0 @@
|
||||
subproject libs/static_assert ;
|
||||
|
||||
|
||||
unit-test static_assert_test : static_assert_test.cpp
|
||||
: <include>$(BOOST_ROOT) : ;
|
||||
|
||||
unit-test static_assert_example_1 : static_assert_example_1.cpp
|
||||
: <include>$(BOOST_ROOT) : ;
|
||||
|
||||
unit-test static_assert_example_2 : static_assert_example_2.cpp
|
||||
: <include>$(BOOST_ROOT) : ;
|
||||
|
||||
unit-test static_assert_example_3 : static_assert_example_3.cpp
|
||||
: <include>$(BOOST_ROOT) : ;
|
||||
|
||||
|
@ -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_JOIN(boost_static_assert_typedef_, __LINE__)
|
||||
BOOST_ASSERT_JOIN(boost_static_assert_typedef_, __LINE__)
|
||||
#else
|
||||
// __LINE__ macro broken when -ZI is used see Q199057
|
||||
// fortunately MSVC ignores duplicate typedef's.
|
||||
@ -74,10 +74,19 @@ template<int x> struct static_assert_test{};
|
||||
#else
|
||||
// alternative enum based implementation:
|
||||
#define BOOST_STATIC_ASSERT( B ) \
|
||||
enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
|
||||
enum { BOOST_ASSERT_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
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
#include <cwchar>
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
#if !defined(WCHAR_MIN)
|
||||
#if defined(__BORLANDC__) && !defined(WCHAR_MIN)
|
||||
#define WCHAR_MIN 0
|
||||
#endif
|
||||
|
||||
@ -29,4 +29,3 @@ int main()
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -13,6 +13,10 @@
|
||||
// all these tests should fail:
|
||||
//
|
||||
|
||||
#ifdef BOOST_MSVC
|
||||
#error "VC6 not supported in this test (buggy compiler problem)"
|
||||
#endif
|
||||
|
||||
|
||||
struct Bob
|
||||
{
|
||||
@ -23,7 +27,7 @@ struct Bob
|
||||
char c;
|
||||
int f()
|
||||
{
|
||||
#ifndef BOOST_MSVC // broken sizeof in VC6
|
||||
#ifndef _MSC_VER // 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
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include <boost/type_traits.hpp>
|
||||
|
||||
template <class RandonAccessIterator >
|
||||
RandonAccessIterator foo(RandonAccessIterator from, RandonAccessIterator)
|
||||
RandonAccessIterator foo(RandonAccessIterator from, RandonAccessIterator to)
|
||||
{
|
||||
// this template can only be used with
|
||||
// random access iterators...
|
||||
|
Reference in New Issue
Block a user