Полученная вами ошибка говорит о том, что у оператора ostream нет правила для применения к объектам типа trait
.Самый лучший способ сделать это на C ++ - это перегрузить оператор <<
, но вы сказали, что не хотите этого делать.
Учитывая это ограничение, вы можете перевести элемент traits
в то, что поддерживает оператор ostream.Разумным способом сделать это было бы использование уровня пространства имен, функции, не являющейся членом
std::string to_string(const traits& t) {
/// Code to generate a string representation of your traits object
}
for (const auto emp& : employees){
std::cout<< to_string(emp) << ' ';
}
Если бы я видел такой код в работе, я бы ожидал, что у автора была причина не использовать более каноническую перегрузку оператораи я бы разочаровался, если бы они этого не сделали.