![]() |
Home | Libraries | People | FAQ | More |
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:
#define BOOST_METAPARSE_STRING BOOST_METAPARSE_V1_STRING
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)