Если я что-то пропустил (я не следил за последними изменениями в стандарте слишком близко), большая часть использования массивов стилей C все еще остается. std::array
разрешает статическую инициализацию, но она все равно не будет считать инициализаторы для вас. И поскольку единственное реальное использование массивов стилей C до std::array
было для статически инициализированных таблиц по строкам:
MyStruct const table[] =
{
{ something1, otherthing1 },
// ...
};
с использованием обычных функций begin
и end
шаблона (принятого в C ++ 11), чтобы перебирать их. Не упоминая размер, который компилятор определяет из числа инициализаторов.
EDIT: Еще одна вещь, которую я забыл: строковые литералы по-прежнему представляют собой массивы стиля C; т.е. с типом char[]
. Я не думаю, что кто-то исключил бы использование строковых литералов только потому, что у нас есть std::array
.