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

Macro Metafunctions

Boost , Chapter 1. The Type Traits Introspection Library , Chapter 1. The Type Traits Introspection Library

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

Библиотека TTI использует макросы для создания метафункций для интроспекции внутреннего элемента по имени. Каждый макрос для определенного типа внутреннего элемента имеет две формы, простую, где первый макропараметр, обозначающий «имя» внутреннего элемента, используется для создания имени метафункции, и сложную, где первый макропараметр, называемый «черта», обозначает имя метафункции, а второй макропараметр обозначает «имя», которое должно быть интроспектировано. Помимо этого различия, две формы макроса создают метафункции, которые имеют одинаковую функциональность.

Для использования этих метафункций вы можете включить основной общий файл заголовка «boost/tti/tti.hpp», если не указано иное. В качестве альтернативы вы можете включить конкретный файл заголовка, как указано в таблице ниже.

Приведена таблица этих макросов, основанная на внутреннем элементе, существование которого интроспектирует метапрограммист. Более подробные объяснения и примеры для каждой из макрометафункций будут следовать этому разделу в документации. Фактический синтаксис для каждой макрометафункции можно найти в справочном разделе, а примеры использования для всех макрометафункций можно найти в разделе«Использование макрометафункций».

В столбце шаблона дается только имя, генерируемое простой формой шаблона, так как имя, генерируемое сложной формой, всегда является «чертой», где «черта» является первым параметром к соответствующему макросу сложной формы.

Все интроспективные метафункции в таблице ниже возвращают булеву константу, называемую «значением», которая определяет, существует ли внутренний элемент. Все метафункции также имеют вложенный тип, называемый «тип», который для каждой из них является типом булевой постоянной величины. Это всегда повышение::mpl::bool_.

Table 1.2. TTI Macro Metafunctions

Внутренний элемент

Макро

шаблон

Специфический файл заголовка

Тип

<BOOST_TTI_HAS_TYPE>(название)

<has_type_'name'>

класс TTI_T = закрытый тип

<has_type.hpp>

Тип с лямбда-выражением

<BOOST_TTI_HAS_TYPE>(название)

<has_type_'name'>

класс TTI_T = замкнутый тип

класс TTI_U = лямбда-выражение, вызванное внутренним типом и возвращающее булеву константу

<has_type.hpp>

Шаблон классов (с использованием вариадных макросов)

<BOOST_TTI_HAS_TEMPLATE>(имя)

<has_template_'name'>

класс TTI_T = тип оболочки

Все параметры шаблона должны быть параметрами типа шаблона

<has_template.hpp>

Шаблон классов (без использования вариадных макросов)

<BOOST_TTI_HAS_TEMPLATE>(имя, Boost_PP_NIL)

<has_template_'name'>

класс TTI_T = тип оболочки

Все параметры шаблона должны быть параметрами типа шаблона

<has_template.hpp>

Шаблон класса с парамами (с использованием вариадных макросов)

<BOOST_TTI_HAS_TEMPLATE>(имя,...[а]]

<has_template_'name'>

класс TTI_T = прилагаемый тип

<has_template.hpp>

Шаблон класса с парамами

<BOOST_TTI_HAS_TEMPLATE>(имя, ppArray[b]]

<has_template_'name'>

класс TTI_T = прилагаемый тип

<has_template.hpp>

Данные о членах

<BOOST_TTI_HAS_MEMBER_DATA>(имя)

<has_member_data_'name'>

класс TTI_T = включающий тип OR указатель на данные о членах ("MemberData_Type Enclosing_Type:::*"]

класс TTI_R = (факультативный) тип данных Если первым параметром является указатель на данные участника, это не должно быть указано.

<has_member_data.hpp>

Функция члена

<BOOST_TTI_HAS_MEMBER_FUNCTION>(имя)

<has_member_function_'name'>

класс TTI_T = ограждающий тип ИЛИ указатель на функцию члена ("Return_Type Enclosing_Type:::* (типы нулевых или более запятых)")

класс TTI_R = (необязательно) возвратный тип, если первым параметром является ограждающий тип. Если первым параметром является указатель на функцию члена, это не должно быть указано.

класс TTI_FS = (факультативные) типы параметров функции в качестве последовательности Boost MPL. Если первым параметром является указатель на функцию члена, это не должно быть указано. Если нет функциональных параметров, это не нужно уточнять. Недостатки для повышения::mpl::vector<>.

класс TTI_TAG = (необязательно) Boost<function_types>тип тега. Если первым параметром является указатель на функцию члена, это не должно быть указано. Недостатки<boost::function_types::null_tag>

<has_member_function.hpp>

Статические данные

<BOOST_TTI_HAS_STATIC_MEMBER_DATA>(имя)

<has_static_member_data_'name'>

класс TTI_T = тип оболочки

класс TTI_Type = тип данных

<has_static_member_data.hpp>

Функция статического члена

<BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION>(имя)

<has_static_member_function_'name'>

класс TTI_T = ограждающий тип

класс TTI_R = тип возврата или тип функции ('Return_Type (Zero or more comma-separated parameter types)')

класс TTI_FS = (факультативный) тип параметра функции в качестве последовательности Boost MPL forward. Если вторым параметром является тип функции, это не должно быть указано. Если нет функциональных параметров, это не нужно уточнять. Недостатки для повышения::mpl::vector<>.

класс TTI_TAG = (необязательно) Увеличить<function_types>тип тега. Если вторым параметром является тип функции, это не должно быть указано. Недостатки<boost::function_types::null_tag>

<has_static_member_function.hpp>

Данные, либо данные члена, либо статические данные члена

<BOOST_TTI_HAS_DATA>(имя)

<has_data_'name'>

класс TTI_T = тип оболочки

класс TTI_Type = тип данных

<has_data.hpp>

Функция, либо функция члена, либо статическая функция члена

<BOOST_TTI_HAS_FUNCTION>(имя)

<has_function_'name'>

класс TTI_T = ограждающий тип

класс TTI_R = возвращаемый тип

класс TTI_FS = (необязательно) типы параметров функции в качестве последовательности Boost MPL forward. Если нет функциональных параметров, это не нужно уточнять. Недостатки для повышения::mpl::vector<>.

класс TTI_TAG = (необязательно) Boost<function_types>тип тега. По умолчанию<boost::function_types::null_tag>

<has_function.hpp>

[a]Параметры шаблона как вариадные данные.

[b]Параметры шаблона как кортежная часть массива PP.



PrevUpHomeNext

Статья Macro Metafunctions раздела Chapter 1. The Type Traits Introspection Library Chapter 1. The Type Traits Introspection Library может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 1. The Type Traits Introspection Library ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 00:29:59/0.02619194984436/1