It turns out that char c[] = {"a"}; is completely valid in both C++03 and C++11.
I would not expect it to be, because it is an array of char not of char const*, and I would expect a brace-initialiser to require a compatible type for each of its "items". It has one item, and that's a char const* not a char.
So what makes this initialisation valid? And is there a rationale for it being so?
Similarly, char c[] = {"aa"}; compiles, and printing c results in the output "aa".
I would expect char c[]{"a"} to be valid in C++11, of course, but it's not the same! Similarly, char c[] = {'a'} is obvious in both, as is char c[] = "a".
char c[] = {"aa"};?Bthat does not convert to the target typeAwhen I'm initialising aA[].