2017-12-27 241 views
0

我要去通升壓使用Boost 1.66.0和VS 2017 ::登錄庫教程獲取的問題,一開始:boost :: log 1.66.0。參數從升壓轉換器的教程set_filter是錯誤的

void init() 
{ 
    logging::core::get()->set_filter 
    (
    logging::trivial::severity >= logging::trivial::info 
); 
} 

錯誤: 無運算符「> =」匹配這些操作數... 它看起來合法 - 第一個操作數是沒有定義任何比較操作符的結構(包括公共基類,我錯過了一些免費函數嗎?第二個操作數是枚舉。
我的問題是它是如何工作的?

+0

定義'operator> ='的頭文件是否應該單獨包含? – Ivan

+0

我懷疑這將是Boost日誌記錄許多問題中的第一個。這不是一個很好的圖書館 - 它過於複雜,不太友好。我建議你要麼尋找一個不同的日誌庫或寫自己的。最終,你會最終做出其中的一個...... – Sean

回答

0

示例代碼沒有錯,您可以測試它是否編譯並運行,有關完整的代碼,請參閱libs/log/example/doc/tutorial_trivial_flt.cpp

過濾器表達式的第一個參數是一個關鍵字,也是一個Boost.Phoenix終端。它使過濾器表達式構建一個Boost.Phoenix函數對象,而不是立即評估比較。比較運算符因此取自Boost.Phoenix(boost/phoenix/operator/comparison.hpp,其通過boost/phoenix/operator.hpp包括boost/log/expressions.hpp)。

+0

安德烈,你的圖書館是好的。發生什麼事是VS 2017編輯器顯示問題,但代碼編譯和鏈接就好了。謝謝。 – egor

+0

代碼編輯器可能很難通過Boost.Phoenix和Boost.Proto中包含的宏和模板進行解析,而Boost.Phoenix是建立在Boost.Phoenix之上的。不幸的是,我不能做太多的事情。有些IDE更聰明(通常,那些使用Clang/LLVM來維護內部代碼模型的軟件,例如QtCreator)。 –