我把例如从http://www.boost.org/doc/libs/1_61_0/libs/log/example/doc/tutorial_trivial_flt.cpp并增加了一个位域打印:升压日志非const位域编译错误(向后兼容问题)
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
namespace logging = boost::log;
//[ example_tutorial_trivial_with_filtering
void init()
{
logging::core::get()->set_filter
(
logging::trivial::severity >= logging::trivial::info
);
}
struct BF {
unsigned int b : 8;
BF() : b(0) {}
};
int main(int, char*[])
{
init();
BF bf;
BOOST_LOG_TRIVIAL(info) << "An informational severity message " << bf.b;
return 0;
}
//]
有了提升1.61我得到一个编译错误:
cannot bind bitfield 'bf.BF::b' to 'unsigned int&'
使用boost 1.57编译并运行代码(打印:[2016-09-19 20:21:33.018112] [0x000007fd1d5be672] [info]信息严重性消息0)
注意:
- 的课程COUT可以处理这个问题(所以我认为这不仅是向后兼容的问题,而是一个bug)
- 提升1.61可以处理常量位字段,例如
BOOST_LOG_TRIVIAL(info) << "An informational severity message " << BF().b;
我正在寻找解决方法。 建议?
我猜目前没有解决方案通过boost :: log本身,对吧? 是否有计划在未来修复它? –
除非你想修补Boost.Log,否则没有透明的解决方案。 https://svn.boost.org/trac/boost/ticket/11998与您的问题具有相同的来源,您也可以将您的案例添加到该故障单。 –
如果你有宠物,我会非常高兴拥有它。 TNX! –