![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Determine if a Type Should be Treated as a Container (Qi and Karma)Boost , Spirit 2.5.2 , Customization of Spirit's Attribute Handling
|
![]() |
Note |
---|---|
Этот файл заголовка не должен быть включен непосредственно какой-либо пользовательской программой, поскольку он обычно включается другими файлами заголовка Spirit, основанными на его содержании. |
Имя |
---|
< |
template <typename Container, typename Enable> struct is_container { <unspecified>; };
Параметр |
Описание |
по умолчанию |
---|---|---|
< |
Тип,< |
Нет |
< |
Параметр шаблона помощника, используемый для выборочного включения или отключения определенных специализаций< |
< |
Notation
C
Тип, подлежащий тестированию, должен ли он рассматриваться как контейнер.
T1
, T2
, ...Произвольные типы
выражение |
Семантика |
---|---|
< |
Результат метафункции, которая оценивает до< |
Духпредопределяет специализацию этой точки настройки для нескольких типов. В следующей таблице перечислены эти типы вместе с условиями, для которых соответствующие специализации будут оцениваться до<mpl::true_
>(см.MPL Boolean Constant):
Параметры шаблонов |
Семантика |
---|---|
< |
Возвращается< |
< |
Возвращение< |
< |
Возвращается< |
< |
Возвращение< |
Точка настройки<is_container
>должна быть реализована для конкретного типа, когда этот тип должен использоваться в качестве атрибута вместо контейнера STL. Он применим для парсеровSpirit.Qiи генераторовSpirit.Karma. Как правило, он должен быть реализован всякий раз, когда определенный тип должен быть передан в качестве атрибута парсера или генератора, обычно обнажающего STL-контейнер,<C
>и если тип не обнажает интерфейс STL-контейнера (то есть<is_container<C>::type
>обычно возвращается<mpl::false_
>). Эти компоненты имеют правило распространения атрибутов в виде:
a: A --> Op(a): vector<A>
где<Op(a)
>означает любую осмысленную операцию на компоненте<a
>.
Если эта точка настройки реализована, могут потребоваться также следующие другие точки настройки.
Имя |
Когда внедрять |
---|---|
Необходимо осуществлять всякий раз, когда< |
|
Карма:Список< |
|
Карма:Список< |
|
Карма:Список< |
|
Карма:Список< |
|
Карма:Список< |
|
Карма:Список< |
|
Примеры использования точки настройки<is_container
>см. здесь:embedded_container_example,use_as_containerиcounter_example.
Статья Determine if a Type Should be Treated as a Container (Qi and Karma) раздела Spirit 2.5.2 Customization of Spirit's Attribute Handling может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Customization of Spirit's Attribute Handling ::
реклама |