Compare commits

..

21 Commits

Author SHA1 Message Date
Daniel James
9d0bf3f2df Quickbook: New branch for development.
From now on this will be my development branch.


[SVN r70613]
2011-03-27 10:17:05 +00:00
Beman Dawes
e910489e16 Add BOOST_STATIC_ASSERT_MSG
[SVN r68584]
2011-01-31 15:03:41 +00:00
John Maddock
f57e592d1e Change PDF URL to SF download page.
[SVN r67529]
2011-01-01 12:28:35 +00:00
Daniel James
a0a2bd5703 Update various libraries' documentation build.
Mostly to use the images and css files under doc/src instead of
doc/html, usually be deleting the settings in order to use the defaults.
Also add 'boost.root' to some builds in order to fix links which rely on
it.

[SVN r63146]
2010-06-20 18:00:48 +00:00
Beman Dawes
80c6340833 Use BOOST_NO_STATIC_ASSERT
[SVN r59698]
2010-02-16 12:45:53 +00:00
John Maddock
138c5bde91 Fix gcc warning.
[SVN r57495]
2009-11-08 18:59:24 +00:00
Troy D. Straszheim
5d9274a683 rm cmake from trunk. I'm not entirely sure this is necessary to satisfy the inspect script, but I'm not taking any chances, and it is easy to put back
[SVN r56942]
2009-10-17 02:07:38 +00:00
Troy D. Straszheim
87ecd7d39f Copyrights on CMakeLists.txt to keep them from clogging up the inspect
reports.  This is essentially the same commit as r55095 on the release
branch.



[SVN r55159]
2009-07-26 00:49:56 +00:00
John Maddock
62461d8848 Add PDF generation options to fix external links to point to the web site.
Added a few more Boostbook based libs that were missed first time around.
Fixed PDF naming issues.

[SVN r51284]
2009-02-17 10:05:58 +00:00
John Maddock
a7e33291eb Fix up PDF generation options.
[SVN r50910]
2009-01-30 18:20:49 +00:00
John Maddock
413e7eda07 Fix inclusion of incorrect header.
Fixes #2537.

[SVN r50371]
2008-12-23 12:03:43 +00:00
Michael A. Jackson
a9a9f0591b Updating dependency information for modularized libraries.
[SVN r49628]
2008-11-07 17:05:27 +00:00
Michael A. Jackson
effe841116 Continuing merge of CMake build system files into trunk with the encouragement of Doug Gregor
[SVN r49510]
2008-11-01 13:15:41 +00:00
Daniel James
8cfe5d77c0 Fix a PDF link that I missed before.
[SVN r47364]
2008-07-12 19:32:15 +00:00
John Maddock
8b819d5c6c Changed BOOST_STATIC_ASSERT for GCC to suppress warnings about old C style casts.
[SVN r43988]
2008-04-01 17:53:56 +00:00
John Maddock
bc5065e495 Added link to PDF docs.
[SVN r43357]
2008-02-21 16:49:59 +00:00
Douglas Gregor
1663a635aa Fix C++0x helper macros
[SVN r37178]
2007-03-14 09:20:38 +00:00
John Maddock
b9a3b24aef remove dead file.
[SVN r36552]
2006-12-31 17:27:27 +00:00
Douglas Gregor
a0dac351fb Preliminary C++0x support
[SVN r36149]
2006-11-22 15:58:39 +00:00
John Maddock
c68b2114de Added trivial docs change, based on user suggestion, and brought example code into synch.
[SVN r34874]
2006-08-11 18:14:13 +00:00
John Maddock
48b6934f7f Added license info.
[SVN r34585]
2006-07-17 10:49:22 +00:00
9 changed files with 43 additions and 66 deletions

View File

@@ -1,28 +0,0 @@
#
# Copyright Troy D. Straszheim
#
# Distributed under the Boost Software License, Version 1.0.
# See http://www.boost.org/LICENSE_1_0.txt
#
#----------------------------------------------------------------------------
# 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

@@ -12,6 +12,7 @@ boostbook standalone
:
static_assert
:
<xsl:param>boost.root=../../../..
<xsl:param>nav.layout=none
<xsl:param>navig.graphics=0
# PDF Options:
@@ -36,9 +37,3 @@ boostbook standalone
<format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
;
install html : ../../../doc/html/boostbook.css ;
install ../ : ../../../boost.png ;

View File

@@ -16,20 +16,33 @@
]
This manual is also available in
[@http://svn.boost.org/svn/boost/sandbox/pdf/static_assert/release/static_assert.pdf
[@http://sourceforge.net/projects/boost/files/boost-docs/
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`
is not true. In other words it is the compile time equivalent of the assert macro;
The header `<boost/static_assert.hpp>` supplies two macros:
BOOST_STATIC_ASSERT(x)
BOOST_STATIC_ASSERT_MSG(x, msg)
Both generate a compile time error message if the integral-constant-expression `x`
is not true. In other words, they are the compile time equivalent of the assert macro;
this is sometimes known as a "compile-time-assertion", but will be called a
"static assertion" throughout these docs. Note that if the condition is `true`,
then the macro will generate neither code nor data - and the macro can also
then the macros will generate neither code nor data - and the macros can also
be used at either namespace, class or function scope. When used in a template,
the static assertion will be evaluated at the time the template is instantiated;
this is particularly useful for validating template parameters.
this is particularly useful for validating template parameters.
If the C++0x `static_assert` feature is available, both macros will use it.
For `BOOST_STATIC_ASSERT(x)`, the error message with be a stringized version of `x`.
For `BOOST_STATIC_ASSERT_MSG(x, msg)`, the error message will be the `msg` string.
If the C++0x `static_assert` feature is not available, `BOOST_STATIC_ASSERT_MSG(x, msg)`
will be treated as `BOOST_STATIC_ASSERT(x)`.
The material that follows assumes the C++0x `static_assert` feature is not available.
One of the aims of `BOOST_STATIC_ASSERT` is to generate readable error messages.
These immediately tell the user that a library is being used in a manner that

View File

@@ -17,6 +17,12 @@
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
#ifndef BOOST_NO_STATIC_ASSERT
# define BOOST_STATIC_ASSERT_MSG( B, Msg ) static_assert(B, Msg)
#else
# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
#endif
#ifdef __BORLANDC__
//
// workaround for buggy integral-constant expression support:
@@ -38,7 +44,7 @@
# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
#endif
#ifdef BOOST_HAS_STATIC_ASSERT
#ifndef BOOST_NO_STATIC_ASSERT
# define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
#else
@@ -125,7 +131,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 // defined(BOOST_NO_STATIC_ASSERT)
#endif // BOOST_STATIC_ASSERT_HPP

View File

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

View File

@@ -12,7 +12,7 @@
#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...

View File

@@ -5,7 +5,7 @@
// See http://www.boost.org for most recent version including documentation.
#include <climits>
#include <limits>
#include <boost/limits.hpp>
#include <boost/static_assert.hpp>

View File

@@ -16,12 +16,16 @@
// Namespace scope
BOOST_STATIC_ASSERT(sizeof(int) >= sizeof(short));
BOOST_STATIC_ASSERT(sizeof(char) == 1);
BOOST_STATIC_ASSERT_MSG(sizeof(int) >= sizeof(short), "msg1");
BOOST_STATIC_ASSERT_MSG(sizeof(char) == 1, "msg2");
// Function (block) scope
void f()
{
BOOST_STATIC_ASSERT(sizeof(int) >= sizeof(short));
BOOST_STATIC_ASSERT(sizeof(char) == 1);
BOOST_STATIC_ASSERT_MSG(sizeof(int) >= sizeof(short), "msg3");
BOOST_STATIC_ASSERT_MSG(sizeof(char) == 1, "msg4");
}
struct Bob
@@ -29,6 +33,8 @@ struct Bob
private: // can be in private, to avoid namespace pollution
BOOST_STATIC_ASSERT(sizeof(int) >= sizeof(short));
BOOST_STATIC_ASSERT(sizeof(char) == 1);
BOOST_STATIC_ASSERT_MSG(sizeof(int) >= sizeof(short), "msg5");
BOOST_STATIC_ASSERT_MSG(sizeof(char) == 1, "msg6");
public:
// Member function scope: provides access to member variables
@@ -36,9 +42,11 @@ struct Bob
char c;
int f()
{
#ifndef _MSC_VER // broken sizeof in VC6
#if defined(_MSC_VER) && _MSC_VER < 1300 // broken sizeof in VC6
BOOST_STATIC_ASSERT(sizeof(x) >= sizeof(short));
BOOST_STATIC_ASSERT(sizeof(c) == 1);
BOOST_STATIC_ASSERT_MSG(sizeof(x) >= sizeof(short), "msg7");
BOOST_STATIC_ASSERT_MSG(sizeof(c) == 1, "msg8");
#endif
return x;
}
@@ -52,6 +60,7 @@ struct Bill
{
private: // can be in private, to avoid namespace pollution
BOOST_STATIC_ASSERT(sizeof(Int) > sizeof(char));
BOOST_STATIC_ASSERT_MSG(sizeof(Int) > sizeof(char), "msg9");
public:
// Template member function scope: provides access to member variables
@@ -62,10 +71,12 @@ struct Bill
{
BOOST_STATIC_ASSERT(sizeof(Int) == sizeof(Int2));
BOOST_STATIC_ASSERT(sizeof(Char) == sizeof(Char2));
BOOST_STATIC_ASSERT_MSG(sizeof(Int) == sizeof(Int2), "msg10");
BOOST_STATIC_ASSERT_MSG(sizeof(Char) == sizeof(Char2), "msg11");
}
};
void test_Bill() // BOOST_CT_ASSERTs are not triggerred until instantiated
void test_Bill() // BOOST_STATIC_ASSERTs are not triggerred until instantiated
{
Bill<int, char> z;
//Bill<int, int> bad; // will not compile

View File

@@ -1,19 +0,0 @@
#
# Copyright Troy D. Straszheim
#
# Distributed under the Boost Software License, Version 1.0.
# See http://www.boost.org/LICENSE_1_0.txt
#
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)