ошибка назначения семантического действия 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.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]