![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
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 ::
реклама |