2017-12-27 365 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)。 –