Ошибка статического подтверждения uint_not_usable_without_attribute при использовании числового генератора в правиле кармы - PullRequest
0 голосов
/ 23 октября 2018

Я не могу использовать числовой генератор повышения кармы в правиле кармы, как мне кажется, потому что я каким-то образом использую неверный параметр шаблона итератора для правила:

#include <iostream>
#include <iterator>
#include <string>
#include <boost/spirit/include/karma.hpp>

template <typename OutputIterator>
boost::spirit::karma::rule<OutputIterator, uint_fast16_t>
        int_rule{
    boost::spirit::karma::int_
};

int main(int argc, char* argv[])
{
    std::string output;

    boost::spirit::karma::generate(std::back_inserter(output),
            int_rule<std::back_insert_iterator<std::string>>, 5);

    std::cout << "\"" << output << "\"\n";

    return 0;
}   

Сбои в clang и gcc с

ошибка: static_assert не выполнен из-за требования '! Boost :: is_same

, int_ <15>, unused_type>, output_iterator>, int_ <15>, unused_type>> :: value '"int_not_usable_without_attribute" BOOST_SPIRIT_ASSERT_FAIL (OutputIterator, int_not_usable_without_attribute, ());

При использовании генератора напрямую через boost::spirit::karma::generate(std::back_inserter(output), boost::spirit::karma::int_, 5); компилируется и работает, так что я делаю неправильно?Какой итератор вместо std::back_insert_iterator<std::string> мне нужно использовать, чтобы включить числовой генератор повышения кармы в правило генератора кармы?

1 Ответ

0 голосов
/ 23 октября 2018

Вы забыли скобки в определении правила.Это должно быть uint_fast16_t(), а не просто uint_fast16_t, как описано в разделе Signature документации правила .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...