Правило boost::qi с двойным, как проанализировать подписанный int8?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Правило boost::qi с двойным, как проанализировать подписанный int8?

Сообщение Anonymous »

Boost::qi: Я не могу разобрать подписанный int8_t на двойной:

Код: Выделить всё

template 
struct test : qi::grammar {
test() : test::base_type(start) {

number =
parse_number    [ _val = _1 ]

parse_number =
qi::int_parser() [ _val = boost::phoenix::static_cast_(_1) ];

start = qi::skip(qi::space)[number];
}

private:
qi::rule start;
qi::rule number;
qi::rule parse_number;
}
Мне нужно разобрать "255" как int8_t на число, которое является двойным. Но, как и int8_t, 255 будет анализироваться как -1.
Позже я хочу расширить это для поддержки префиксов имен типов, чтобы parse_number< /code> может их анализировать:

Код: Выделить всё

255     : 255
(u8)255 : 255
(s8)255 : -1
Текущие сообщения об ошибках:

Код: Выделить всё

../src/StringTest.cpp:129:106: error: expected ‘{’ before ‘;’ token
129 |             parse_prefix = (qi::int_parser()) [ _val = boost::phoenix::static_cast_(_1) ];
|                                                                                                          ^

../src/StringTest.cpp:129:28: error: invalid cast to function type ‘boost::spirit::qi::int_parser()’
129 |             parse_prefix = (qi::int_parser()) [ _val = boost::phoenix::static_cast_(_1) ];
|                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Каков (правильный) способ это сделать?

Подробнее здесь: https://stackoverflow.com/questions/793 ... igned-int8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»