https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80662
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> --- EDG matches GCC with --g++ (which is what ICC uses) but in it's strict mode it says they're ambiguous: "s.C", line 13: error: more than one operator "<<" matches these operands: function template "void operator<<(C &&, const T &)" (declared at line 4) function template "void my_stream::operator<<(T &&)" (declared at line 8) operand types are: my_stream << const char [12] my_stream{} << "hello world"; ^ 1 error detected in the compilation of "s.C". So the EDG team identified this as a G++ bug/oddity and emulated it for --g++ mode.