Ошибка назначения семантического действия boost::spirit::karma

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

#include <boost/spirit/include/karma.hpp>
#include <boost/spirit/include/karma_int.hpp>
#include <boost/spirit/include/karma_generate.hpp>

namespace karma = boost::spirit::karma;
int main() {
    std::string s;
    std::back_insert_iterator<std::string> out(s);
    boost::spirit::karma::generate(out,karma::int_[karma::_1=2]); //won't compile
    //boost::spirit::karma::generate(out,karma::int_,2); this compiles and works
    std::cout<<s;
}

приводит к ошибке компилятора:

 error: no viable overloaded '='

Я использую g++ 4.6.3 и Boost 1.48.

1 ответ

Решение

Вам не хватает некоторых заголовков для включения. Вы можете использовать:

#include <boost/spirit/include/phoenix_operator.hpp> 

это включает операторов, необходимых для этого, или:

#include <boost/spirit/include/phoenix.hpp>

это включает в себя все о Boost.Phoenix. На LWS.

Другие вопросы по тегам