https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99692
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #1) > But by definition at this point operator << does not exist and is not > considered as it is not found via ADL because both std::basic_ostream<char> > and std::vector<int> are in the std namespace and the global namespace is > not considered. Which seems correct to me. Users should not be overloading operator<< for types defined by the standard library anyway. You don't own vector<int> so you don't get to say how it should be output to std::ostream.