Рассмотрим:
template <typename T>
class Wrapper {
public:
explicit Wrapper(const T &value) : m_value(value) {}
void display() const {
std::cout << m_value;
}
private:
T m_value;
};
Если вы попытаетесь создать экземпляр Wrapper
с типом, который не реализует потоковую передачу с operator<<
, то ваш код не скомпилируется.
Поэтому самое простое решение - не беспокоиться об этом.Всякий раз, когда компилятор сообщает вам, что перегрузка operator<<
для типа значения отсутствует, вам придется добавить соответствующую перегрузку.