From 4fadb5319a52444ccded7a4d91bb05e2f89a5492 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Tue, 21 Oct 2025 18:32:48 +0300 Subject: [PATCH] Document BOOST_CORE_STATIC_ASSERT --- doc/changes.qbk | 2 ++ doc/core.qbk | 1 + doc/static_assert.qbk | 57 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 doc/static_assert.qbk diff --git a/doc/changes.qbk b/doc/changes.qbk index d2acc4b..fd2179a 100644 --- a/doc/changes.qbk +++ b/doc/changes.qbk @@ -17,6 +17,8 @@ and `std::size`, respectively, when the latter are provided by compiler. This resolves potential ambiguities when both `boost::` and `std::` alternatives are found by the compiler, e.g. as a result of ADL. ([github_issue 206]) +* Added [link core.static_assert `BOOST_CORE_STATIC_ASSERT`], a reimplementation of `BOOST_STATIC_ASSERT` + for libraries that already depend on Core and would like to remove the dependency on StaticAssert. [endsect] diff --git a/doc/core.qbk b/doc/core.qbk index 3398aa8..9e7973b 100644 --- a/doc/core.qbk +++ b/doc/core.qbk @@ -81,6 +81,7 @@ criteria for inclusion is that the utility component be: [include serialization.qbk] [include size.qbk] [include span.qbk] +[include static_assert.qbk] [include swap.qbk] [include typeinfo.qbk] [include type_name.qbk] diff --git a/doc/static_assert.qbk b/doc/static_assert.qbk new file mode 100644 index 0000000..50ebbce --- /dev/null +++ b/doc/static_assert.qbk @@ -0,0 +1,57 @@ +[/ + Copyright 2025 Peter Dimov + Distributed under the Boost Software License, Version 1.0. + https://boost.org/LICENSE_1_0.txt +] + +[section:static_assert static_assert] + +[simplesect Authors] + +* Peter Dimov + +[endsimplesect] + +[section Header ] + +The header `` defines +the macro `BOOST_CORE_STATIC_ASSERT(expr)`, which +expands to `static_assert(expr, #expr)` under C++11 +or later, or to a suitable emulation under C++03. + +The same functionality is provided by `BOOST_STATIC_ASSERT` +defined in ``, and the macro +is duplicated here for libraries that already depend +on Core and would like to remove the dependency on +StaticAssert. + +[section Synopsis] + +`` +#define BOOST_CORE_STATIC_ASSERT(expr) static_assert(expr, #expr) +`` + +[endsect] + +[section Example] + +``` +#include + +BOOST_CORE_STATIC_ASSERT( sizeof(char[1]) == 1 ); + +struct X +{ + BOOST_CORE_STATIC_ASSERT( sizeof(char[2]) == 2 ); +}; + +int main() +{ + BOOST_CORE_STATIC_ASSERT( sizeof(char[3]) == 3 ); +} +``` +[endsect] + +[endsect] + +[endsect]