...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This library is maintained by several developers, and in order it to have a consistent design, look and feel, a few guidelines need to be followed:
sync/detail
directory. All non-public names should reside in the sync::detail
namespace. All non-public macro names should start with BOOST_SYNC_DETAIL_
.
sync
namespace. Nested namespaces are also possible. All public macro names
should start with BOOST_SYNC_
.
User-definable config macros should start with BOOST_SYNC_WITH_
,
BOOST_SYNC_WITHOUT_
(for
component selection, if any), BOOST_SYNC_USE_
or BOOST_SYNC_NO_
. This
does not include macros the library defines itself as a result of various
compatibility checks (these count as non-public ones).
boost/sync/detail/config.hpp
.
The config header contains all configuration macros, but no auto-linking
code. If the built library appears, the auto-linking machinery and macros
will be in a separate header, which will be included only by those components
that need it.
boost/sync/detail/header.hpp
before any code (as the last include) and boost/sync/detail/footer.hpp
after all code. These two files are for warning and ABI management.