Boost C++ Libraries of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards



Template classes

This section describes how the library is prepared for supporting multiple (not backward compatible) changes.

The elements of the library are defined in the boost::metaparse::v1 namespace. For example the one_char class is boost::metaparse::v1::one_char and is available after including the <boost/metaparse/v1/one_char.hpp> header file.

At the same time the library provides the <boost/metaparse/one_char.hpp> header file which includes <boost/metaparse/v1/one_char.hpp> and contains the following:

namespace boost
  namespace metaparse
    using v1::one_char;

This makes it possible to use one_char as boost::metaparse::one_char.

Future versions of the library may provide other namespaces (eg. v2). The header files in <boost/metaparse/...> provide the latest version of the library. To always get version v1, one should use header files in <boost/metaparse/v1/...>.

The library does not use inline namespaces to work on compilers that do not support them.

Macros defined by the library are prefixed with BOOST_METAPARSE_V1_. For example BOOST_METAPARSE_V1_STRING. It is defined in the <boost/metaparse/v1/string.hpp> header file. The library provides the <boost/metaparse/string.hpp> header file as well, which includes the definition of this macro and provides the following definition:


This makes it possible to use the macro as BOOST_METAPARSE_STRING. Future versions of the library may define other versions of this macro (eg. BOOST_METAPARSE_V2_STRING). BOOST_METAPARSE_STRING will refer to the latest version.

This versioning does not affect macros that may be overridden by the code using the library. (eg. BOOST_METAPARSE_LIMIT_STRING_SIZE)