Оказывается, что char c[] = {"a"};
полностью действует как в С++ 03, так и С++ 11.
Я бы не ожидал, что это будет, потому что это массив char
not of char const*
, и я ожидал бы, что инициатор скобки потребует совместимый тип для каждого из своих "элементов". Он имеет один элемент и a char const*
не a char
.
Итак, что делает эту инициализацию действительной? И есть ли обоснование для этого?
Аналогично, char c[] = {"aa"};
компилируется, а печать c
приводит к выводу "aa
".
Я бы ожидал, что char c[]{"a"}
будет действительным в С++ 11, конечно, но это не то же самое! Аналогично, char c[] = {'a'}
очевидно в обоих, как и char c[] = "a"
.