I'm going thru boost::log library tutorial using Boost 1.66.0 and VS 2017. Get the problem in the very beginning:
void init()
{
logging::core::get()->set_filter
(
logging::trivial::severity >= logging::trivial::info
);
}
Error:
No operator ">=" matches these operands ...
It looks legitimate - First operand is a structure with no any comparison operators defined(including public base class. Did I miss some free functions?). Second operand is enum.
My question is how it is worked before?
The example code is not wrong and you can test that it compiles and runs, see libs/log/example/doc/tutorial_trivial_flt.cpp
for the full code.
The first argument in the filter expression is a keyword and also a Boost.Phoenix terminal. It makes the filter expression build a Boost.Phoenix function object instead of evaluating the comparison immediately. The comparison operator is thus taken from Boost.Phoenix (boost/phoenix/operator/comparison.hpp
, which is included through boost/phoenix/operator.hpp
by boost/log/expressions.hpp
).