2013-01-31 55 views
1

我試圖通過語義動作設定因緣產生價值,但是,它不會編譯。我無法找到原因,因爲我很確定按照文檔中的說明使用它。由於我是業餘新手,很可能我做了一些菜鳥的錯誤。一個最小的例子:的boost ::精神::因緣語義動作分配錯誤

#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 '=' 

我使用克++ 4.6.3和升壓1.48。

回答

1

您缺少一些要包含的標題。您可以使用:

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

,包括工作爲此所需的運營商,或:

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

,其中包括有關Boost.Phoenix一切。 On LWS.

+0

是的,它做到了。謝謝 – ickby

相關問題