Какой статус у динарцев?
В gcc 4.9 появилась поддержка n3696 (массивы времени выполнения с автоматическим хранением). N3662 говорит:
В массивах N3497 размера времени выполнения с автоматическим хранением Jens Maurer предлагает массивы с ограничением времени выполнения. Эти массивы относятся к std::dynarray, как обычные массивы фиксированного размера к std::array.
В этом списке рассылки Джонатан Уэйкли говорит:
Мы должны добавить в руководство таблицу состояния C++14, но пока приведем краткий обзор состояния библиотеки.
...
Эти отсутствуют:
- N3672 Предложение добавить служебный класс для представления необязательных объектов.
- N3655 TransformationTraits Redux
- N3662 C++ Динамические массивы
- N3644 Итераторы нулевого пересылки
Черты первая проста, но немного утомительна, и итераторы, вероятно, влияют только на режим отладки, но две другие являются существенной частью работы. Кто-нибудь планирует работать или еще?
Тем не менее, n3662 также говорит:
Вместо того, чтобы принимать C массивов переменной длины, мы предлагаем определить новое средство для массивов, где число элементов ограничено при построении. Мы называем эти динамические массивы, dynarray.
Не могу найти dynarray
используя быстрые клавиши CTRL+F на gcc
страницы. Так и есть dynarray
будет осуществляться в ближайшее время, и будет variable length arrays
остаться или это исчезнет?
1 ответ
std::dynarray
вначале предполагалось использовать C++14. Однако позже было решено, что std::dynarray
будет перемещен в "Массив TS", который также может включать в себя некоторые std::array_view
учебный класс. Основная причина заключается в том, что комитет не согласовал некоторые моменты, касающиеся распределения кучи и распределения стека в некоторых случаях (что если вы попытаетесь выделить std::dynarray
с new
). Поэтому было решено, что это будет отложено. Все еще продолжаются некоторые дискуссии о том, что должно быть сделано.
Класс не будет готов к C++14. Вероятно, он будет поставляться с массивами TS или C++17.
Обновить: std::dynarray
не был в C++14, не будет в C++17, Arrays TS был прекращен, поэтому, вероятно, не будет ничего близкого std::dynarray
в стандарте в ближайшее время. Если я правильно понимаю текущую позицию стандарта, а не магические массивы размера во время выполнения, комитет предпочел бы найти общее решение для классов размера во время выполнения, но каждое предложение до сих пор было отклонено.