Compare commits

..

18 Commits

Author SHA1 Message Date
4156b6d1db v2, v3, integration branch
[SVN r62649]
2010-06-09 11:34:33 +00:00
80c6340833 Use BOOST_NO_STATIC_ASSERT
[SVN r59698]
2010-02-16 12:45:53 +00:00
138c5bde91 Fix gcc warning.
[SVN r57495]
2009-11-08 18:59:24 +00:00
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
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
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
a7e33291eb Fix up PDF generation options.
[SVN r50910]
2009-01-30 18:20:49 +00:00
413e7eda07 Fix inclusion of incorrect header.
Fixes #2537.

[SVN r50371]
2008-12-23 12:03:43 +00:00
a9a9f0591b Updating dependency information for modularized libraries.
[SVN r49628]
2008-11-07 17:05:27 +00:00
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
8cfe5d77c0 Fix a PDF link that I missed before.
[SVN r47364]
2008-07-12 19:32:15 +00:00
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
bc5065e495 Added link to PDF docs.
[SVN r43357]
2008-02-21 16:49:59 +00:00
1663a635aa Fix C++0x helper macros
[SVN r37178]
2007-03-14 09:20:38 +00:00
b9a3b24aef remove dead file.
[SVN r36552]
2006-12-31 17:27:27 +00:00
a0dac351fb Preliminary C++0x support
[SVN r36149]
2006-11-22 15:58:39 +00:00
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
48b6934f7f Added license info.
[SVN r34585]
2006-07-17 10:49:22 +00:00
4 changed files with 14 additions and 39 deletions

View File

@ -12,7 +12,6 @@ boostbook standalone
:
static_assert
:
<xsl:param>boost.root=../../../..
<xsl:param>nav.layout=none
<xsl:param>navig.graphics=0
# PDF Options:
@ -37,3 +36,9 @@ 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,33 +16,20 @@
]
This manual is also available in
[@http://sourceforge.net/projects/boost/files/boost-docs/
[@http://svn.boost.org/svn/boost/sandbox/pdf/static_assert/release/static_assert.pdf
printer friendly PDF format].
[section:intro Overview and Tutorial]
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;
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;
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 macros will generate neither code nor data - and the macros can also
then the macro will generate neither code nor data - and the macro 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.
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.
this is particularly useful for validating template parameters.
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,12 +17,6 @@
#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:

View File

@ -16,16 +16,12 @@
// 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
@ -33,8 +29,6 @@ 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
@ -42,11 +36,9 @@ struct Bob
char c;
int f()
{
#if defined(_MSC_VER) && _MSC_VER < 1300 // broken sizeof in VC6
#ifndef _MSC_VER // 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;
}
@ -60,7 +52,6 @@ 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
@ -71,12 +62,10 @@ 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_STATIC_ASSERTs are not triggerred until instantiated
void test_Bill() // BOOST_CT_ASSERTs are not triggerred until instantiated
{
Bill<int, char> z;
//Bill<int, int> bad; // will not compile