1

我正在尝试通过语义操作设置业力生成器值,但是它不会编译。我找不到原因,因为我很确定我按照文档中的说明使用它。由于我是业力新手,因此很可能我犯了一些新手错误。一个最小的例子:

#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。

4

1 回答 1

1

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

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

其中包括为此工作所需的操作员,或者:

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

其中包括有关 Boost.Phoenix 的所有内容。在 LWS 上。

于 2013-01-31T15:26:54.610 回答