![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Optional Generator (-a)Boost , Spirit 2.5.2 , Generator Operators
|
выражение |
Семантика |
---|---|
< | Генератор< |
См.Составные обозначения атрибутов.
выражение |
атрибут |
---|---|
< |
a: A --> -a: optional<A> a: Unused --> -a: Unused
|
![]() | Important |
---|---|
В таблице выше используется< |
Факультативный генератор будет выполнять свой встроенный генератор один раз, если предоставленный атрибут имеет действительное значение. Он передает значение, удерживаемое в его атрибуте, встроенному генератору.
Важно отметить, что необязательный генератор не выполняет никакой буферизации вывода, генерируемого его встроенными элементами. Это означает, что любой неисправный элемент может уже генерировать некоторый выход, которыйнеоткатился назад.
![]() | Tip |
---|---|
Самый простой способ заставить необязательный генератор вести себя так, как если бы он делал буферизацию, — это завернуть его в буферную директиву (см.< buffer[-a] нене будет генерировать какой-либо выход в случае выхода из строя генератора< |
Общая сложность опционального генератора определяется сложностью его встроенного генератора. Сложность опционального генератора сама по себе O(1).
![]() | Note |
---|---|
Тестовый ремень для примера (примеров) ниже представлен в разделеОсновные примеры. |
Некоторые включают:
#include <boost/spirit/include/karma.hpp> #include <boost/spirit/include/support_utree.hpp> #include <boost/spirit/include/phoenix_core.hpp> #include <boost/spirit/include/phoenix_operator.hpp> #include <boost/fusion/include/std_pair.hpp> #include <iostream> #include <string>
Некоторые используют декларации:
using boost::spirit::karma::double_;
Базовое использование дополнительного генератора:
boost::optional<double> val(1.0); test_generator_attr("1.0", -double_, val); test_generator_attr("2.0", -double_, 2.0);
Использование и результат работы пустого опционального генератора:
boost::optional<double> val; // empty optional test_generator_attr("", -double_, val);
Статья Optional Generator (-a) раздела Spirit 2.5.2 Generator Operators может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Generator Operators ::
реклама |