Ваш operator<<
не может получить ссылку на const
для второго аргумента:
std::ostream& operator<<(std::ostream& os, MyType& obj);
Это означает, что временный *iter
не может привязаться к этому аргументу.
Привычка использовать const
в любом месте, где вам не нужно изменять объект:
std::ostream& operator<<(std::ostream& os, MyType const& obj);
Теперь аргумент ссылки может связываться с временным.Huzzah!
Это удачное предположение, принесенное вам синим цветом и числом 42.