Compare commits

..

22 Commits

Author SHA1 Message Date
517aedfdf9 Release 1.49.0
[SVN r77094]
2012-02-22 22:08:43 +00:00
7d9fdaee13 Merge documentation and property change fixes from Trunk.
[SVN r71486]
2011-04-25 17:27:05 +00:00
06dedcd232 Merge trunk BOOST_ASSERT_MSG additions
[SVN r68912]
2011-02-15 14:54:16 +00:00
6f1d2476fa Change PDF URL to SF download page.
[SVN r67530]
2011-01-01 12:32:32 +00:00
e27a27c9f3 Merge documentation fixes.
* Use `doc/src/*.css` instead of `doc/html/*.css`.
* Remove wiki and people directories.
* Some documentation fixes.
* Left out `minimal.css` changes and boostbook changes because of clashes.


[SVN r63347]
2010-06-26 12:30:09 +00:00
12f96b5653 Merge warning fixes from Trunk.
[SVN r58217]
2009-12-07 13:23:38 +00:00
23d7abde22 rm cmake from the release branch before it goes out broken. Policy dictates that you never commit to release, you commit to trunk and merge to release.
[SVN r56941]
2009-10-17 01:10:45 +00:00
9e4d6dfeff Add basic copyright/license to keep cmake out of the inspection report
[SVN r55095]
2009-07-22 21:51:01 +00:00
2637358ba9 Merge PDF build changes from Trunk.
[SVN r51417]
2009-02-23 18:39:32 +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
720fb456d5 This commit was manufactured by cvs2svn to create tag
'Version_1_34_1'.

[SVN r38286]
2007-07-24 19:28:14 +00:00
2fa11699bf Added links to PDF docs.
[SVN r37653]
2007-05-09 17:20:56 +00:00
69dbf6f12d Remove obsolete Boost.Build v1 files.
[SVN r35880]
2006-11-06 17:10:46 +00:00
66dd3d2595 Added trivial docs change, based on user suggestion, and brought example code into synch.
[SVN r34874]
2006-08-11 18:14:13 +00:00
7a0a3fbf32 Added license info.
[SVN r34585]
2006-07-17 10:49:22 +00:00
c5de8ff789 This commit was manufactured by cvs2svn to create branch 'RC_1_34_0'.
[SVN r33417]
2006-03-21 02:26:31 +00:00
4 changed files with 39 additions and 14 deletions

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:

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