
On Mon, Mar 11, 2013 at 8:03 PM, Klaim - Joël Lamotte
On Mon, Mar 11, 2013 at 4:19 PM, Andrey Semashev
wrote: Could you send me a complete compilable code sample?
Yes, I just tried with the following code which is not as minimal as it could be (it the headers includes a lot other headers) but it generate the same error in an empty project (generated with CMake) Note that I upgraded to Boost Log V2 in the same time than Boost from v1.52 to v1.53. The problem seem related to Phoenix as stream is just a typedef if I understand the code correctly. I added the compilation error log in case the problem comes from something I've setup: http://pastebin.com/zHRwaBsQ
------
#include
#include #include namespace logattr { const auto MODULE_NAME = "ModuleName"; const auto TIMESTAMP = "TimeStamp"; }
int main() {
namespace blog = boost::log; namespace expr = blog::expressions;
const auto FORMAT_MODULE_NAME = expr::attr< std::string >( logattr::MODULE_NAME ); const auto FORMAT_TIMESTAMP = expr::format_date_timeboost::posix_time::ptime( logattr::TIMESTAMP, "%Y-%m-%d %H:%M:%S" ); const auto FORMAT_MESSAGE = expr::message;
const auto a = expr::stream << FORMAT_TIMESTAMP; // compiles const auto c = expr::stream << FORMAT_MODULE_NAME; // compiles const auto d = expr::stream << FORMAT_MESSAGE; // error: no operator "<<" matches these operand const auto e = expr::stream << "test"; // error: no operator "<<" matches these operand const auto f = expr::stream << std::string("test"); // error: no operator "<<" matches these operand
return 0; }
You also have to #include