boost :: spirit :: karma语义动作分配错误

时间:2013-01-31 14:06:30

标签: c++ boost placeholder boost-spirit boost-spirit-karma

我正在尝试通过语义操作设置karmas generator-value,但是,它不会编译。我找不到共鸣的原因,因为我很确定我按照文档中的说明使用它。因为我是业力新手,所以我最有可能犯了一些菜鸟错误。一个最小的例子:

#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;
}

导致comipler错误:

 error: no viable overloaded '='

我正在使用g ++ 4.6.3并提升1.48。

1 个答案:

答案 0 :(得分:1)

您缺少要包含的标题。您可以使用:

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

包括此工作所需的运算符,或者:

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

包含有关Boost.Phoenix的所有内容。 On LWS.