https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121267

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Jan Schultke from comment #2)
> 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?

Note I think this part is missed by clang here:
8.5.4 List-initialization [dcl.init.list] p.3.2
Otherwise, if T is a character array and the initializer list has a single
element that is an appropriately-typed string literal (8.5.2), initialization
is performed as described in that section.

Reply via email to