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

Determine the Type to be Stored in a Container (Qi)

Boost , Spirit 2.5.2 , Store Parsed Attribute Values into a Container (Qi)

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
container_value

Шаблон<container_value>является метафункцией шаблона, используемой в качестве точки настройки атрибута. На него ссылаются.Qiповторяющиеся парсеры (Kleene,Plus,ListиRepeat) для определения типа для хранения в контейнере.

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

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

[Note]Note

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

Namespace

Имя

<boost::spirit::traits>

Synopsis
template <typename Container, typename Enable>
struct container_value
{
    typedef <unspecified> type;
};
Template parameters

Параметр

Описание

по умолчанию

<Container>

Нет

Enable

<void>

C

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

T1, T2, ...

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

Expression Semantics

выражение

Семантика

container_value<C>::type

Метафункция, которая оценивает тип, который должен храниться в данном типе контейнера<C>

.
Predefined Specializations

Духпредопределяет специализацию этой точки настройки для нескольких типов. В следующей таблице перечислены эти типы вместе с выставленными типами и соответствующей семантикой:

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

Семантика

<C>

value_typeC.

boost::optional<C>

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

Возврат<container_value<TN>::value>для первого<TN>(из<T1>,<T2>, ...), для которого<is_container<TN>::type>оценивает<mpl::true_>. В противном случае он вернется<unused_type>

.

<unused_type>

Возвращение<unused_type>.

When to implement

Точка настройки<is_container>должна быть реализована для конкретного типа, когда этот тип должен использоваться в качестве атрибута вместо контейнера STL. Он применим только для парсеровSpirit.Qi. Как правило, он должен быть реализован всякий раз, когда определенный тип должен быть передан в качестве атрибута парсера, обычно обнажающего STL-контейнер, и если этот тип не обнажает интерфейс STL-контейнера (т.е. не встраиваемый типдеф для<value_type>). Эти компоненты имеют правило распространения атрибутов в виде:

a: A --> Op(a): vector<A>

где<Op(a)>означает любую осмысленную операцию на компоненте<a>.

Related Attribute Customization Points

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

Имя

Когда внедрять

traits::push_back_container

traits::clear_value

Example

Вот пример реализации по умолчанию.<traits::container_value>Точка настройки, предоставляемая библиотекой:

template <typename Container, typename Enable/* = void*/>
struct container_value
  : detail::remove_value_const<typename Container::value_type>
{};

Этот шаблон инстанцируется библиотекой в соответствующих местах при использовании поставляемого типа контейнера в качестве аргумента шаблона. Встроенный<type>используется как тип атрибута при разборе элементов для хранения в этом контейнере.

Следующий пример показывает предопределенную специализацию<unused_type>:

template <>
struct container_value<unused_type>
{
    typedef unused_type type;
};

(62) также<unused_type>, таким образом распространяя статус атрибута «не заботится» на встроенный парсер.


PrevUpHomeNext

Статья Determine the Type to be Stored in a Container (Qi) раздела Spirit 2.5.2 Store Parsed Attribute Values into a Container (Qi) может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Store Parsed Attribute Values into a Container (Qi) ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 09:09:29/0.007220983505249/0