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

Generator Directives Forcing Atomic Extraction (as<T>, as_string[], as_wstring[])

Boost , Spirit 2.5.2 , Generator Directives

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
Description

Класс<as<T>>вынуждает атомное извлечение контейнера типа<T>из его потребляемого атрибута. Обычно повторяющиеся генераторы (такие какKleene (<*>)и т.д.) или последовательности, обнажающие<vector<A>>, извлекают элементы из контейнера, поставляемого в качестве их потребляемого атрибута, зацикливаясь через итераторы контейнеров. В некоторых случаях это может быть нежелательно. Класс<as<T>>создает директиву, которая передает неназванный временный объект типа<T>его субъекту, если извлечение<T>из его потребляемого атрибута, определенного во время генерации, является действительным.<traits::valid_as<T>()>призван<as<T>>определить действительность; если он возвращается ложным, генератор выходит из строя. Последующее извлечение осуществляется путем вызова.<traits::as<T>()>.

[Note]Note

<T>должен быть контейнерным. Если<traits::is_container>не вернется истинно для<T>, произойдет ошибка времени компиляции.

Header
// forwards to <boost/spirit/home/karma/directive/as.hpp>
#include <boost/spirit/include/karma_as.hpp>

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

Namespace

Имя

<boost::spirit::as_string// alias: boost::spirit::karma::as_string>

<boost::spirit::as_wstring// alias: boost::spirit::karma::as_wstring>

Synopsis
template <typename T>
struct as;
Template parameters

Параметр

Описание

по умолчанию

<T>

Тип контейнера.

Нет

Model of

Notation

a

<Generator>.

attr

Атрибут, предоставленный директиве.

Expression Semantics

Семантика выражения определяется только там, где она отличается от или не определена в<UnaryGenerator>.

выражение

Семантика

<as<T>()[a]>

Извлеките пример<T>из<attr>и вызовите генератор субъекта<a>, снабдив неназванным временным атрибутом.

<as_string[a]>

Эквивалентно<as<std::string>()[a]>

<as_wstring[a]>

эквивалентно<as<std::wstring>()[a]>

Attributes

См.Составные обозначения атрибутов.

выражение

атрибут

<as<T>()[a]>

<a: A--> as<T>()[a]: T>

Complexity

Сложность определяется сложностью генератора объекта<a>и сложностью извлечения неназванного контиана типа<T>из атрибута<attr>.

Example
[Note]Note

Тестовый ремень для примера (примеров) ниже представлен в разделеОсновные примеры.

Некоторые используют декларации:

using boost::spirit::utree;
using boost::spirit::utree_type;
using boost::spirit::utf8_symbol_type;
using boost::spirit::karma::as;
using boost::spirit::karma::as_string;
using boost::spirit::karma::char_;
using boost::spirit::karma::double_;

<as<T>>,<as_string>и<as_wstring>:

Для правильной обработки конкатенации струн<utree>мы используем<as_string[]>. Мы также используем<as<T>>для явного извлечения символьного узла<utree>.

typedef as<utf8_symbol_type> as_symbol_type;
as_symbol_type const as_symbol = as_symbol_type();
utree ut;
ut.push_back("xyz");
ut.push_back(1.23);
test_generator_attr("xyz1.23", as_string[*char_] << double_, ut);
test_generator_attr("xyz1.23", as<std::string>()[*char_] << double_, ut);
ut.clear();
ut.push_back(utf8_symbol_type("xyz"));
ut.push_back(1.23);
test_generator_attr("xyz1.23", as_symbol[*char_] << double_, ut);
test_generator_attr("xyz1.23", as<utf8_symbol_type>()[*char_] << double_, ut);


PrevUpHomeNext

Статья Generator Directives Forcing Atomic Extraction (as<T>, as_string[], as_wstring[]) раздела Spirit 2.5.2 Generator Directives может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Generator Directives ::


реклама


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

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