![]() |
![]() ![]() ![]() ![]() |
![]() |
Signed Integer Number Generators (int_, etc.)Boost , Spirit 2.5.2 , Numeric Generators
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Имя |
|---|
|
boost::spirit::short_ //
alias: boost::spirit::karma::short_ |
|
|
|
![]() | Note |
|---|---|
Генераторы |
![]() | Note |
|---|---|
|
template < typename T , unsigned Radix , bool force_sign> struct int_generator;
|
Параметр |
Описание |
По умолчанию |
|---|---|---|
| Числовой базовый тип числового парсера. | |
| База радикса. Это может быть либо 2: двоичный, 8: восьмичный, 10: десятичный и 16: шестидесятичный. | |
force_sign | Если | |
Notation
numБуквальное число, любое подписанное целое число, или Ленивый аргумент который оценивает значение типа Num
NumТип num: любой подписанный целочисленный тип
RadixПостоянное целое число, обозначающее требуемый радикс для преобразования вывода. Действительные значения 2, 8, 10 и 16.
force_signПостоянная булевая буква, определяющая, всегда ли генерируемое число должно иметь знак ('+' для положительных чисел, для отрицательных чисел и для нуля.
Семантика выражения определяется только там, где она отличается от или не определена в PrimitiveGenerator.
|
Выражение |
Семантика |
|---|---|
| Создайте целое число буквальных |
short_ int_ long_ long_long
| Создайте целое число, предоставленное обязательным атрибутом, используя форматирование по умолчанию (радикс |
short_(num) int_(num) long_(num) long_long(num)
|
Все генераторы, перечисленные в таблице выше (кроме lit(num)), представляют собой предварительно определенные специализации int_generator<Num, Radix, force_sign> основного типа генератора целых чисел, описанного ниже. Можно напрямую использовать этот тип для создания целых генераторов с использованием широкого спектра вариантов форматирования.
|
Выражение |
Семантика |
|---|---|
int_generator< Num, Radix, force_sign >()
| Создайте целое число типа |
int_generator< Num, Radix, force_sign >()(num)
| Генерировать целое число типа |
int_generator<Num, Radix, force_sign>.
.
Если boost::is_integral<Num>::value является rue Тип Num должен определять:
<, , ==, , > и >=+, -, /, , % и unary -Если boost::is_integral<Num>::значение является фальсифицированным, тип Num должен быть определен:
<, , ==, , > и >=+, -, /, , % и unary -std, std::std::pow, std::std, ltrunc, std::std::ceil. Они должны быть определены таким образом, чтобы их можно было найти с помощью поиска, зависящего от аргументов (ADL).|
Выражение |
Атрибут |
|---|---|
| |
| |
| |
| |
int_(num) | |
| |
| |
| |
| |
int_generator< Num, Radix, force_sign >()
| |
int_generator< Num, Radix, force_sign >()(num)
| |
![]() | Note |
|---|---|
В дополнение к их обычному атрибуту типа |
O(N), где
N- число цифр, необходимых для представления генерируемого целого числа
![]() | 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::int_; using boost::spirit::karma::lit;
Базовое использование генератора int_:
test_generator("-2", lit(-2)); test_generator("-2", int_(-2)); test_generator_attr("-2", int_(-2), -2); test_generator_attr("", int_(-2), 3); // fails (as -2 != 3)! test_generator_attr("-2", int_, -2);
Статья Signed Integer Number Generators (int_, etc.) раздела Spirit 2.5.2 Numeric Generators может быть полезна для разработчиков на c++ и boost.
:: Главная :: Numeric Generators ::
реклама |