Проект С++ 14 включает как массивы размера времени выполнения, так и контейнер std::dynarray
. Из того, что я могу сказать, единственное реальное различие между ними состоит в том, что std::dynarray
имеет интерфейс STL (например, begin
, end
, size
и т.д.), В то время как массивы размера времени выполнения не работают. Так почему С++ 14 нуждается в них обоих?
Я понимаю, что массивы размера времени выполнения являются частью основного языка, а std::dynarray
является частью стандартной библиотеки, но предложение для std::dynarray
ясно, что авторы ожидают, что компиляторы во многих случаях будут предлагать специальную поддержку std::dynarray
, чтобы она могла быть как можно более эффективной, то есть такой же эффективной, как и размер массива времени исполнения. Таким образом, различие языка/библиотеки кажется несколько искусственным.
Итак, опять же, почему С++ 14 нужны как массивы размера времени выполнения, так и std::dynarray
? И учитывая, что std::dynarray
имеет более богатый (STLified) интерфейс, почему бы просто не отбрасывать массивы размера времени выполнения, предполагая, что std::dynarray
можно реализовать с равной эффективностью выполнения?
Разъяснение
Когда я говорю о "массивах размера времени исполнения", я имею в виду новую функцию языка С++ 14, описанную в N3639, а не на традиционные C-массивы или VLA или что-либо в С++ 11.