Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Types

Boost , Chapter 1. The Variadic Macro Data Library 1.9 , Specific macros for working with data types

Boost C++ Libraries

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

PrevUpHomeNext

Подмножество идентификаторов — это типы VMD, называемые «v-типом». Это идентификаторы, которые представляют все типы данных препроцессора, которые VMD может анализировать. Это подмножество идентификаторов автоматически регистрируется и предварительно обнаруживается VMD. Каждый тип идентификатора начинается с приставки «BOOST_VMD_TYPE_».

Фактические типы:

  • BOOST_VMD_TYPE_EMPTY представляет собой пустоту, т.е. "пустые данные"
  • BOOST_VMD_TYPE_ARRAY, массив Boost PP
  • BOOST_VMD_TYPE_LIST, список Boost PP
  • BOOST_VMD_TYPE_SEQ, a Boost PP seq
  • BOOST_VMD_TYPE_TUPLE, PP турпл
  • BOOST_VMD_TYPE_IDENTIFIER, идентификатор
  • BOOST_BMD_TYPE_NUMBER, число
  • BOOST_VMD_TYPE_TYPE, сам тип
  • BOOST_VMD_TYPE_SEQUENCE, последовательность
  • BOOST_VMD_TYPE_UNKNOWN, неизвестный тип

Поскольку v-тип сам по себе является идентификатором, то конкретное ограничение на вход для тестирования точно такое же, как и для идентификаторов.

Ограничение заключается в том, что начальный входной символ, игнорируя любое белое пространство, пропущенное в качестве входа для тестирования, должен быть либо:

  • символ идентификатора, т.е. буквенно-цифровой или подчеркивающий
  • левая скобка кортежа

и если первый символ не является левой скобкой кортежа, остальные символы должны быть буквенно-цифровыми или подчеркиванием, пока не произойдет пространственный символ или конец ввода.

Если это не так, поведение не определено, и, скорее всего, произойдет ошибка предварительной обработки.

Макрос, используемый для тестирования определенного типа в VMD, называется BOOST_VMD_IS_TYPE. Макро принимает один параметр, вход для тестирования против.

Макро возвращает 1, если параметр является v-типом, в противном случае макрос возвращает 0.

V-тип также является идентификатором, который был зарегистрирован и предварительно обнаружен, поэтому вы также можете использовать функциональность VMD, которая работает с идентификаторами, для работы с V-типом в качестве идентификатора, если хотите.

Example

Рассмотрим пример использования BOOST_VMD_IS_TYPE.

#include <boost/vmd/is_type.hpp>
BOOST_VMD_IS_TYPE(input)
returns:
if input = BOOST_VMD_TYPE_SEQ, 1
if input = BOOST_VMD_TYPE_NUMBER, 1
if input = SQUARE, 0
if input = BOOST_VMD_TYPE_IDENTIFIER DATA, 0 since there are tokens after the type
if input = %44, does not meet the constraint therefore undefined behavior
if input = ( BOOST_VMD_TYPE_EMPTY ), 0 since the macro begins with a tuple and this can be tested for
Usage

Для использования макроса BOOST_VMD_IS_TYPE используется общий заголовок:

#include <boost/vmd/vmd.hpp>

или включить конкретный заголовок:

#include <boost/vmd/is_type.hpp>

PrevUpHomeNext

Статья Types раздела Chapter 1. The Variadic Macro Data Library 1.9 Specific macros for working with data types может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Specific macros for working with data types ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 22:38:00/0.0064520835876465/0