Compare commits

..

11 Commits

Author SHA1 Message Date
46b4482b2f This commit was manufactured by cvs2svn to create branch
'python-v2-dev'.

[SVN r14785]
2002-08-12 13:35:54 +00:00
9d3c2ed75f Fix unversioned VC++ checks
[SVN r14436]
2002-07-13 12:26:19 +00:00
38b5799e33 respect <sysinclude>
[SVN r13995]
2002-05-21 16:24:07 +00:00
22bb032a79 fix typo in template parameter name
[SVN r13043]
2002-03-03 10:16:50 +00:00
f2725b11af Fixed typo
[SVN r12473]
2002-01-24 12:37:38 +00:00
3ab5f7708e Stripped tabs from source
[SVN r12351]
2002-01-19 12:38:14 +00:00
07628a01a7 Fixed unused variables that show up as warnings when doing regression
tests.


[SVN r11241]
2001-09-24 23:21:16 +00:00
10425f4864 commit of split-config, including any changes required to existing libraries (mainly regex).
[SVN r11138]
2001-09-18 11:13:39 +00:00
3bfec69135 Added Jamfile
[SVN r11074]
2001-09-08 12:07:08 +00:00
90ff3895af Fixed WCHAR_MIN issues
[SVN r11073]
2001-09-08 12:06:21 +00:00
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
7 changed files with 37 additions and 33 deletions

16
Jamfile Normal file
View File

@ -0,0 +1,16 @@
subproject libs/static_assert ;
unit-test static_assert_test : static_assert_test.cpp
: <sysinclude>$(BOOST_ROOT) : ;
unit-test static_assert_example_1 : static_assert_example_1.cpp
: <sysinclude>$(BOOST_ROOT) : ;
unit-test static_assert_example_2 : static_assert_example_2.cpp
: <sysinclude>$(BOOST_ROOT) : ;
unit-test static_assert_example_3 : static_assert_example_3.cpp
: <sysinclude>$(BOOST_ROOT) : ;

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

@ -131,7 +131,7 @@ argument, we can achieve this using something like this:</p>
<pre>#include &lt;climits&gt;
#include &lt;boost/static_assert.hpp&gt;
Template &lt;class UnsignedInt&gt;template &lt;class UnsignedInt&gt;
template &lt;class UnsignedInt&gt;
class myclass
{
private:

View File

@ -10,7 +10,7 @@
#include <cwchar>
#include <boost/static_assert.hpp>
#if defined(__BORLANDC__) && !defined(WCHAR_MIN)
#if !defined(WCHAR_MIN)
#define WCHAR_MIN 0
#endif
@ -29,3 +29,4 @@ int main()
return 0;
}

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
#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200 // 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

View File

@ -12,12 +12,12 @@
#include <boost/static_assert.hpp>
#include <boost/type_traits.hpp>
template <class RandonAccessIterator >
RandonAccessIterator foo(RandonAccessIterator from, RandonAccessIterator to)
template <class RandomAccessIterator >
RandomAccessIterator foo(RandomAccessIterator from, RandomAccessIterator)
{
// this template can only be used with
// random access iterators...
typedef typename std::iterator_traits< RandonAccessIterator >::iterator_category cat;
typedef typename std::iterator_traits< RandomAccessIterator >::iterator_category cat;
BOOST_STATIC_ASSERT((boost::is_convertible<cat*, std::random_access_iterator_tag*>::value));
//
// detail goes here...