我正在尝试重载operator<<
,以便我可以在Boost.Log中记录vector<T>
。我尝试重载formatting_ostream
:
template <typename T>
inline boost::log::formatting_ostream &
operator<< (boost::log::formatting_ostream & o, const std::vector<T> & v) {
return o;
}
这不能用Boost 1.60.0编译
我使用以下记录器:
typedef boost::log::sources::severity_logger<
boost::log::trivial::severity_level
> my_logger_t;
我看到的错误是:
... / boost_1_60_0 /建造/包括/升压/日志/效用/ formatting_ostream.hpp:799:19:
错误:
operator<<
不匹配(操作数类型为boost::log::v2s_mt_posix::basic_formatting_ostream<char>::ostream_type {aka std::basic_ostream<char>}
和const std::vector<int>
)strm.stream()&lt;&lt;值
据我所知,重载不起作用!!
因为编译器仍在调用预定义的operator<<
进行strm.stream() << value
调用。
我做错了吗? 什么是最好的方法呢?
谢谢!
答案 0 :(得分:1)
这看起来像ADL问题:因为运算符&lt;&lt;既不是boost :: log也不是std名称空间,它在名称查找过程中不会被选中。