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

Determine if a Type Should be Treated as a Container (Qi and Karma)

Boost , Spirit 2.5.2 , Customization of Spirit's Attribute Handling

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
is_container

Шаблон<is_container>является метафункцией шаблона, используемой в качестве точки настройки атрибута. На него ссылаются.ЦиПоследовательность(<>>>) иКармаПоследовательность (<<<>)операторы для того, чтобы определить, может ли поставляемый атрибут потенциально рассматриваться как контейнер.

Header
#include <boost/spirit/home/support/container.hpp>

См. такжеВключить структуру.

[Note] Note

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

Namespace

Имя

<boost::spirit::traits>

Synopsis
template <typename Container, typename Enable>
struct is_container
{
    <unspecified>;
};
Template parameters

Параметр

Описание

по умолчанию

<Container>

Тип,<Container>который должен быть проверен, должен ли он рассматриваться как контейнер

Нет

<Enable>

Параметр шаблона помощника, используемый для выборочного включения или отключения определенных специализаций<is_container>с использованием SFINAE (то есть<boost::enable_if>или<boost::disable_if>).

<void>

Notation

C

Тип, подлежащий тестированию, должен ли он рассматриваться как контейнер.

T1, T2, ...

Произвольные типы

Expression Semantics

выражение

Семантика

<is_container<C>::type>

Результат метафункции, которая оценивает до<mpl::true_>, если данный тип,<C>, должен рассматриваться как контейнер,<mpl::false_>в противном случае, как правило, любая реализация<is_container>должна вести себя так, как если бы это былабулевая константа MPL...

Predefined Specializations

Духпредопределяет специализацию этой точки настройки для нескольких типов. В следующей таблице перечислены эти типы вместе с условиями, для которых соответствующие специализации будут оцениваться до<mpl::true_>(см.MPL Boolean Constant):

Параметры шаблонов

Семантика

<T>

Возвращается<mpl::true_>, если<T>имеет следующие встраиваемые типы:<value_type>,<iterator>,<size_type>и<reference>. В противном случае он вернется<mpl::false_>

.

<boost::optional<T>>

Возвращение<is_container<T>::type>

<boost::variant<T1, T2, ...>>

Возвращается<mpl::true_>, если хотя бы один из<is_container<TN>::type>возвращается<mpl::true_>(где<TN><T1>,<T2>, ...). В противном случае он вернется<mpl::false_>

.

<unused_type>

Возвращение<mpl::false_>.

When to implement

Точка настройки<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>.

Related Attribute Customization Points

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

Example

Примеры использования точки настройки<is_container>см. здесь:embedded_container_example,use_as_containerиcounter_example.


PrevUpHomeNext

Статья 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 ::


реклама


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

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