http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58924
Fanael <fanael4 at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |fanael4 at gmail dot com --- Comment #1 from Fanael <fanael4 at gmail dot com> --- That's expected behavior AFAIU. 'operator<<(basic_ostream<charT, traits>&& os, const T& x)' is a better match for const char[K] than 'basic_ostream<charT,traits>& basic_ostream<charT,traits>::operator<<(const void* p)', hence the former gets called, which then forwards the arguments to 'operator<<(basic_ostream<charT, traits>&& os, const charT* x)'.