template<typename data_t>
abstract_logger_t& operator<< (abstract_logger_t& logger, const data_t& data) {
output(logger, data);
return logger;
}
Here, regardless of loggerwhere you go, the compiler will convert it to abstract_logger_t&. You also need to make the first template of templates.
template<typename T, typename data_t>
T& operator<< (T& logger, const data_t& data) {
output(logger, data);
return logger;
}
source
share