Compare commits

...

8 Commits

Author SHA1 Message Date
ea289e637e Release 1.37.0
[SVN r51178]
2009-02-10 13:14:42 +00:00
9e411076c6 merge of cmake build files from trunk per beman
[SVN r50756]
2009-01-24 18:57:20 +00:00
3488b2bdf2 Merge some documentation updates and fixes from trunk.
Merged revisions 47364,47402-47403 via svnmerge from 
https://svn.boost.org/svn/boost/trunk

........
  r47364 | danieljames | 2008-07-12 20:32:15 +0100 (Sat, 12 Jul 2008) | 1 line
  
  Fix a PDF link that I missed before. (in static assert)
........
  r47402 | danieljames | 2008-07-13 20:42:56 +0100 (Sun, 13 Jul 2008) | 2 lines
  
  Note that emplace is only available on a few compilers.
........
  r47403 | danieljames | 2008-07-13 21:07:45 +0100 (Sun, 13 Jul 2008) | 2 lines
  
  Update the implementation details.
........


[SVN r47405]
2008-07-13 21:08:33 +00:00
28e09a3cca Merge changes from Trunk.
[SVN r47306]
2008-07-11 10:49:31 +00:00
481c2efbac Merge minor change from Trunk.
[SVN r43358]
2008-02-21 16:51:41 +00:00
3b702727b9 Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41370]
2007-11-25 18:38:02 +00:00
f298ed51a9 Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41369]
2007-11-25 18:07:19 +00:00
851fd2622e Starting point for releases
[SVN r39706]
2007-10-05 14:25:06 +00:00
5 changed files with 67 additions and 13 deletions

22
CMakeLists.txt Normal file
View File

@ -0,0 +1,22 @@
#----------------------------------------------------------------------------
# This file was automatically generated from the original CMakeLists.txt file
# Add a variable to hold the headers for the library
set (lib_headers
static_assert.hpp
)
# Add a library target to the build system
boost_library_project(
static_assert
# SRCDIRS
TESTDIRS test
HEADERS ${lib_headers}
# DOCDIRS
# DESCRIPTION
MODULARIZED
# AUTHORS
# MAINTAINERS
)

View File

@ -15,11 +15,11 @@
[last-revision $Date$]
]
[section:intro Overview and Tutorial]
This manual is also available in
[@http://svn.boost.org/svn/boost/sandbox/pdf/static_assert/release/static_assert.pdf
printer friendly PDF format].
This documentation is
[@http://boost-consulting.com/vault/index.php?action=downloadfile&filename=boost_static_assert-1.34.pdf&directory=PDF%20Documentation&
also available in printer-friendly PDF format].
[section:intro Overview and Tutorial]
The header `<boost/static_assert.hpp>` supplies a single macro `BOOST_STATIC_ASSERT(x)`,
which generates a compile time error message if the integral-constant-expression `x`
@ -98,12 +98,17 @@ the user that the template is being misused.
#include <boost/type_traits.hpp>
template <class RandomAccessIterator >
RandomAccessIterator foo(RandomAccessIterator from, RandomAccessIterator to)
RandomAccessIterator foo(RandomAccessIterator from,
RandomAccessIterator to)
{
// this template can only be used with
// random access iterators...
typedef typename std::iterator_traits< RandomAccessIterator >::iterator_category cat;
BOOST_STATIC_ASSERT((boost::is_convertible<cat, const std::random_access_iterator_tag&>::value));
typedef typename std::iterator_traits<
RandomAccessIterator >::iterator_category cat;
BOOST_STATIC_ASSERT(
(boost::is_convertible<
cat,
const std::random_access_iterator_tag&>::value));
//
// detail goes here...
return from;
@ -223,4 +228,3 @@ working at namespace, function, and class scope outweighed the ugliness of a mac
[endsect]

View File

@ -28,6 +28,20 @@
# define BOOST_SA_GCC_WORKAROUND
#endif
//
// If the compiler issues warnings about old C style casts,
// then enable this:
//
#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)))
# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) == 0 ? false : true)
#else
# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
#endif
#ifdef BOOST_HAS_STATIC_ASSERT
# define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
#else
namespace boost{
// HP aCC cannot deal with missing names for template value parameters
@ -74,14 +88,14 @@ template<int x> struct static_assert_test{};
#elif defined(BOOST_MSVC)
#define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)>\
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST ( B ) >)>\
BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
#elif defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)
// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error
// instead of warning in case of failure
# define BOOST_STATIC_ASSERT( B ) \
typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
[ ::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >::value ]
[ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >::value ]
#elif defined(__sgi)
// special version for SGI MIPSpro compiler
#define BOOST_STATIC_ASSERT( B ) \
@ -96,12 +110,12 @@ template<int x> struct static_assert_test{};
#define BOOST_STATIC_ASSERT( B ) \
BOOST_STATIC_CONSTANT(int, \
BOOST_JOIN(boost_static_assert_test_, __LINE__) = \
sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) )
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >) )
#else
// generic version
#define BOOST_STATIC_ASSERT( B ) \
typedef ::boost::static_assert_test<\
sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)>\
sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
#endif
@ -111,7 +125,7 @@ template<int x> struct static_assert_test{};
enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
= sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) }
#endif
#endif // ndef BOOST_HAS_STATIC_ASSERT
#endif // BOOST_STATIC_ASSERT_HPP

1
module.cmake Normal file
View File

@ -0,0 +1 @@
boost_module(static_assert DEPENDS config detail)

13
test/CMakeLists.txt Normal file
View File

@ -0,0 +1,13 @@
boost_test_run(static_assert_test ../static_assert_test.cpp)
boost_test_run(static_assert_example_2 ../static_assert_example_2.cpp)
boost_test_run(static_assert_example_3 ../static_assert_example_3.cpp)
boost_test_compile_fail(static_assert_test_fail_1 ../static_assert_test_fail_1.cpp)
boost_test_compile_fail(static_assert_test_fail_2 ../static_assert_test_fail_2.cpp)
boost_test_compile_fail(static_assert_test_fail_3 ../static_assert_test_fail_3.cpp)
boost_test_compile_fail(static_assert_test_fail_4 ../static_assert_test_fail_4.cpp)
boost_test_compile_fail(static_assert_test_fail_5 ../static_assert_test_fail_5.cpp)
boost_test_compile_fail(static_assert_test_fail_6 ../static_assert_test_fail_6.cpp)
boost_test_compile_fail(static_assert_test_fail_7 ../static_assert_test_fail_7.cpp)
boost_test_compile_fail(static_assert_test_fail_8 ../static_assert_test_fail_8.cpp)
boost_test_compile_fail(static_assert_test_fail_9 ../static_assert_test_fail_9.cpp)
boost_test_compile_fail(static_assert_test_fail_10 ../static_assert_test_fail_10.cpp)