https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121267
--- Comment #2 from Jan Schultke <janschultke at googlemail dot com> --- Well sure, char a[] = {"aaaa"}; is fine, just like the initialization of 's' is fine in the code example (as it should be). What I'm interested in how the compiler internals make the initialization of 't' valid. Is it a bug in template argument deduction, or does GCC just retry initialization from "aaaa" when it's a brace-enclosed string literal, which makes the non-template case work properly, but results in accepts-invalid in the template case, or is it something else entirely?