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 とブースト 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 に答える