Какой статус у динарцев?

В 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 в стандарте в ближайшее время. Если я правильно понимаю текущую позицию стандарта, а не магические массивы размера во время выполнения, комитет предпочел бы найти общее решение для классов размера во время выполнения, но каждое предложение до сих пор было отклонено.

Другие вопросы по тегам