Description
... = переменные параметры. Первый вариадный параметр — это название шаблона внутреннего класса. Следующие вариадные параметры являются необязательными. Если не существует следующих вариадных параметров, то интроспектируемым шаблоном внутреннего класса должны быть все параметры типа шаблона (параметры шаблона, начинающиеся с «класса» или «имя типа»), и может произойти любое количество параметров типа шаблона. Если второй вариадный параметр является BOOST_PP_NIL и не указан другой вариадный параметр, то, как и в предыдущем случае, интроспектируемый шаблон внутреннего класса должен иметь все параметры типа шаблона (параметры шаблона, начинающиеся с «класса» или «имя типа»), и может произойти любое количество параметров типа шаблона. Эта форма допускается для согласования с использованием невариадной формы этого макроса. Если второй вариадный параметр представляет собой массив библиотеки предварительного процессора Boost, и никакой другой вариадный параметр не дается, то шаблон внутреннего класса должен иметь свои шаблонные параметры, соответствующие последовательности в кортежной части массива Boost PP. Эта форма допускается для согласования с использованием невариадной формы этого макроса. В противном случае шаблон внутреннего класса должен иметь свои шаблонные параметры, соответствующие последовательности необязательных вариадных параметров.
генерирует метафункцию, называемую «has_template_’name», где «имя» является первым вариадным параметром. шаблонstruct has_template_'name' { статическое значение const = неуточненное; typedef mpl::bool_type; }; Типы метафункций и возврат: BOOST_TTI_TP_T = прилагаемый тип, в котором искать наше «имя». возврат = «значение» является истинным, если шаблон «имя» существует в прилагаемом типе, в противном случае «значение» является ложным.
Примеры:
1) Поиск шаблона внутреннего класса под названием «MyTemplate» со всеми параметрами типа шаблона, вложенными в класс «MyClass».
BOOST_TTI_HAS_TEMPLATE (MyTemplate)
или
BOOST_TTI_HAS_TEMPLATE(MyTemplate,BOOST_PP_NIL) // Невариадная макроформа
has_template_MyTemplate::value
Это составная временная булева постоянная, которая является либо «истинной», либо «ложной», если вложенный шаблон существует.
2) Поиск шаблона внутреннего класса под названием "MyTemplate" с параметрами шаблона "class T,int x,templateclass U", вложенных в класс "MyClass".
BOOST_TTI_HAS_TEMPLATE (MyTemplate,class,int,templateclass)
или
BOOST_TTI_HAS_TEMPLATE(MyTemplate,(3,(class,int,templateclass))) // Невариадная макроформа
has_template_MyTemplate::value
Это составная временная булева постоянная, которая является либо «истинной», либо «ложной», если вложенный шаблон существует.