В этом разделе описывается, как библиотека подготовлена для поддержки множественных (не обратно совместимых) изменений.
Элементы библиотеки определены в boost::metaparse::v1 namespace. Например, one_char класс boost::metaparse::v1::one_char
и доступен после включения <boost/<>.
В то же время библиотека предоставляет <boost/metaparse/one_char.hpp>
заголовок, который включает в себя <boost/metaparse/v1>/>>>>>>><>>>>>>>>
namespace boost
{
namespace metaparse
{
using v1::one_char;
}
}
Это позволяет использовать one_char
как boost::metaparse::one_char
.
Будущие версии библиотеки могут предоставить другие пространства имен (например, v2
). Файлы заголовка в <boost/metaparse/...>
предоставляют последнюю версию библиотеки. Чтобы всегда получить версию v1
, следует использовать файлы заголовка в <boost/metaparse/v1/...>
.
Библиотека не использует встроенные пространства имен для работы на компиляторах, которые их не поддерживают.
Макрос, определенный библиотекой, префиксируется с BOOST_METAPARSE_V1_
. Например BOOST_METAPARSE_V1_STRING
. Он определяется в <boost/metaparse/v1/string.hpp>
заголовок файла. Библиотека предоставляет <boost/metaparse/string.hpp>
заголовок, который включает в себя определение этого макроса и содержит следующее определение:
#define BOOST_METAPARSE_STRING BOOST_METAPARSE_V1_STRING
Это позволяет использовать макрос как BOOST_METAPARSE_STRING
. Будущие версии библиотеки могут определять другие версии этого макроса (например, BOOST_METAPARSE_V2_STRING
). BOOST_METAPARSE_STRING
будет относиться к последней версии.
Эта версия не влияет на макросы, которые могут быть переопределены кодом с использованием библиотеки. (например, BOOST_METAPARSE_LIMIT_STRING_SIZE
)