Я хочу перегрузить operator <<
для произвольных массивов, чтобы код ] cout << my_arr
подойдет. Сначала я попытался перегрузить второй параметр оператора <<
на const T (& arr) [N]
, где T
и N
параметры шаблона. Но тестирование кода выявило побочный эффект: const char []
также соответствует спецификации типа, и новая перегрузка конфликтует с перегрузкой, определенной в классе потока. Пример кода:
#include <cstddef>
#include <iostream>
template<typename T, std::size_t N>
std::ostream& operator<<(std::ostream& os, const T (&arr)[N])
{
/* do stuff */
return os;
}
int main()
{
std::cout << "noooo\n"; /* Fails: ambiguous overload */
}
Можно ли еще реализовать такой оператор печати массива?