...one of the most highly
regarded and expertly designed C++ library projects in the
world. — Herb Sutter and Andrei
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/detaildirectory. All non-public names should reside in the
sync::detailnamespace. All non-public macro names should start with
syncnamespace. Nested namespaces are also possible. All public macro names should start with
BOOST_SYNC_. User-definable config macros should start with
BOOST_SYNC_WITHOUT_(for component selection, if any),
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.hppbefore any code (as the last include) and
boost/sync/detail/footer.hppafter all code. These two files are for warning and ABI management.