Я пытаюсь установить значение генератора кармы с помощью семантического действия, однако он не скомпилируется. Я не могу найти резон, почему, так как я совершенно уверен, что я использую его, как описано в документации. Поскольку я новичок в карме, скорее всего, я совершил какую-то новичок. Минимальный пример:
#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.
Вам не хватает некоторых заголовков для включения. Вы можете использовать:
#include <boost/spirit/include/phoenix_operator.hpp>
это включает в себя операторов, необходимых для этого, или:
#include <boost/spirit/include/phoenix.hpp>
это включает в себя все о Boost.Phoenix. На LWS.
Других решений пока нет …