Compare commits

..

24 Commits

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

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


[SVN r11241]
2001-09-24 23:21:16 +00:00
John Maddock 10425f4864 commit of split-config, including any changes required to existing libraries (mainly regex).
[SVN r11138]
2001-09-18 11:13:39 +00:00
John Maddock 3bfec69135 Added Jamfile
[SVN r11074]
2001-09-08 12:07:08 +00:00
John Maddock 90ff3895af Fixed WCHAR_MIN issues
[SVN r11073]
2001-09-08 12:06:21 +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
John Maddock a674ac4176 Added comment about lack of static_cast
[SVN r10243]
2001-05-30 11:31:15 +00:00
John Maddock 2b67e5a182 cast integral constant expression to bool to fix some compiler warnings and some compiler bugs.
[SVN r10230]
2001-05-26 10:58:43 +00:00
Jens Maurer 8b37ed2072 add HP aCC workarounds
[SVN r10025]
2001-05-05 20:26:38 +00:00
John Maddock a947d4039a updated url's
[SVN r9993]
2001-04-30 11:28:03 +00:00
Beman Dawes 976f1c78a5 Change all eGroups references to YahooGroups
[SVN r9979]
2001-04-25 00:24:50 +00:00
John Maddock 5d68bc2fd8 fixed typo
[SVN r9836]
2001-04-19 10:53:11 +00:00
John Maddock 362a22e3a7 added integral constant expression links, added tentative fix to is_function_test for older EDG based compilers
[SVN r9833]
2001-04-18 11:28:53 +00:00
John Maddock 1cd7ee8570 Added boost-wide <limits> woraround
[SVN r9688]
2001-04-01 11:59:18 +00:00
John Maddock cb09a717dd tentative fix for MWCW
[SVN r8914]
2001-02-04 12:59:54 +00:00
John Maddock e26b873c29 Fix for EDG based compilers
[SVN r8888]
2001-02-03 11:32:24 +00:00
John Maddock fa0ce33cc6 Undone accidental changes to static_assert_test.cpp
[SVN r8753]
2001-01-24 12:17:46 +00:00
Beman Dawes 42013c6295 Fix broken link
[SVN r8603]
2001-01-15 17:13:18 +00:00
John Maddock 8cb6da5df0 Static assert initial checkin
[SVN r8381]
2000-12-03 12:29:42 +00:00
7 changed files with 51 additions and 41 deletions
+16
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) : ;
+14 -18
View File
@@ -8,8 +8,8 @@
/*
Revision history:
02 August 2000
Initial version.
02 August 2000
Initial version.
*/
#ifndef BOOST_STATIC_ASSERT_HPP
@@ -25,11 +25,13 @@
namespace boost{
template <bool> struct STATIC_ASSERTION_FAILURE;
// HP aCC cannot deal with missing names for template value parameters
template <bool x> struct STATIC_ASSERTION_FAILURE;
template <> struct STATIC_ASSERTION_FAILURE<true>{};
template<int> struct static_assert_test{};
// HP aCC cannot deal with missing names for template value parameters
template<int x> struct static_assert_test{};
}
@@ -51,37 +53,31 @@ template<int> struct static_assert_test{};
// an eye catching error message. The result of the sizeof expression is either
// used as an enum initialiser, or as a template argument depending which version
// is in use...
// Note that the argument to the assert is explicitly cast to bool using old-
// style casts: too many compilers currently have problems with static_cast
// when used inside integral constant expressions.
//
#if !defined(BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS) && !defined(__MWERKS__)
#ifndef BOOST_MSVC
#define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< ( B ) >)>\
BOOST_ASSERT_JOIN(boost_static_assert_typedef_, __LINE__)
sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)>\
BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
#else
// __LINE__ macro broken when -ZI is used see Q199057
// fortunately MSVC ignores duplicate typedef's.
#define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< ( B ) >)\
sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)\
> boost_static_assert_typedef_
#endif
#else
// alternative enum based implementation:
#define BOOST_STATIC_ASSERT( B ) \
enum { BOOST_ASSERT_JOIN(boost_static_assert_enum_, __LINE__) \
= sizeof(::boost::STATIC_ASSERTION_FAILURE< ( B ) >) }
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
+5 -4
View File
@@ -5,7 +5,7 @@
content="text/html; charset=iso-8859-1">
<meta name="Template"
content="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html.dot">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>static assertions</title>
</head>
@@ -18,7 +18,7 @@ vlink="#800080">
<p>The header &lt;boost/static_assert.hpp&gt; supplies a single
macro BOOST_STATIC_ASSERT(x), which generates a compile time
error message if the <a
href="../../more/integral_constant_guidelines.htm">integral-constant-expression</a>
href="../../more/int_const_guidelines.htm">integral-constant-expression</a>
<i>x</i> is not true. In other words it is the compile time
equivalent of the assert macro; this is sometimes known as a
&quot;compile-time-assertion&quot;, but will be called a &quot;static
@@ -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:
@@ -268,7 +268,8 @@ warranty, and with no claim as to its suitability for any purpose.</p>
<p>Maintained by <a href="mailto:John_Maddock@compuserve.com">John
Maddock</a>, the latest version of this file can be found at <a
href="http://www.boost.org/">www.boost.org</a>, and the boost
discussion list at <a href="http://www.yahoogroups.com/list/boost">www.yahoogroups.com/list/boost</a>.
discussion list at <a
href="http://www.yahoogroups.com/list/boost">www.yahoogroups.com/list/boost</a>.
</p>
<p>&nbsp;</p>
+2 -1
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;
}
+5 -5
View File
@@ -26,11 +26,11 @@ RandomAccessIterator foo(RandomAccessIterator from, RandomAccessIterator to)
int main()
{
std::deque<int> d;
std::list<int> l;
foo(d.begin(), d.end()); // OK
//foo(l.begin(), l.end()); // error
return 0;
std::deque<int> d;
std::list<int> l;
foo(d.begin(), d.end()); // OK
//foo(l.begin(), l.end()); // error
return 0;
}
+1 -5
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
+8 -8
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...
@@ -26,11 +26,11 @@ RandonAccessIterator foo(RandonAccessIterator from, RandonAccessIterator to)
int main()
{
std::deque<int> d;
std::list<int> l;
foo(d.begin(), d.end()); // OK
foo(l.begin(), l.end()); // error
return 0;
std::deque<int> d;
std::list<int> l;
foo(d.begin(), d.end()); // OK
foo(l.begin(), l.end()); // error
return 0;
}