Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Versioning

Template classes
Macros

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)


PrevUpHomeNext