在 Boost.Log (Boost 1.60.0) 中重载插入运算符
Overloading insertion operator in Boost.Log (Boost 1.60.0)
我正在尝试重载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/build/include/boost/log/utility/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() <<值
据我了解,重载不起作用!!因为编译器仍在调用进行strm.stream() << value
调用的预定义operator<<
。
我做错了什么吗?最好的方法是什么?
谢谢!
这
看起来像一个 ADL 问题:由于 operator<<既不在 boost::log 中,也不在 std 命名空间中,因此在名称查找期间不会拾取它。
相关文章:
- boost::asio::async_read_until 具有自定义匹配条件运算符重载混淆
- boost::enable_if on 成员函数,重载返回类型
- 使用 C++11 选项编译 C++98 代码时由于 Boost 标头而导致的不明确重载
- 将 boost odeint 与 std::map 和自定义向量空间代数一起使用时,没有可行的重载'='
- 为什么BOOST.RANGE RANGE_BEGIN/END FREE功能对const和非const引用都重载
- 没有重载函数需要 2 个参数错误,并带有 boost::assign::list_of
- 包含 boost::numeric::ublas::matrix 的类的运算符重载
- C++模板,运算符重载和boost::bind - 这个小代码的作用
- boost::thread_group::create_thread(<未解析的重载函数类型>错误
- C++运算符()重载boost::system::error_code技巧
- 将 boost::shared_ptr 与重载下标运算符 ([]) 的类一起使用
- boost::interprocess::map insert 给出:对重载函数的不明确调用
- Boost.Python 包装器中的纯虚拟重载运算符
- 在 Boost.Log (Boost 1.60.0) 中重载插入运算符
- std::bind() 错误:无法确定重载函数"boost::asio::io_service::run"的哪个实例
- 为什么 boost::enable_if 不会导致重复的重载方法编译错误
- 扩展 boost::文件系统::p ath 和重载赋值运算符
- boost::绑定重载函数
- boost::thread::thread(<未解析的重载函数类型>, int) - 模板化类成员函数
- 使用boost::函数绑定到重载方法