dynarrays的状态是什么?

时间:2013-12-25 23:28:36

标签: c++ c++14 dynamic-arrays dynarray

gcc 4.9现在支持n3696 (Runtime-sized arrays with automatic storage duration)n3662说:

  

在具有自动存储空间的N3497运行时大小的数组中   持续时间,Jens Maurer提出了运行时绑定的数组。这些数组   是std :: dynarray,因为正常的固定大小数组是std :: array。

在这mailing list中,Jonathan Wakely说:

  

我们应该在手册中添加一个C ++ 14状态表,但同时也是如此   这里是图书馆状态的快速摘要。

     

...

     

缺少这些:

     
      
  • N3672添加实用程序类以表示可选对象的提议
  •   
  • N3655 TransformationTraits Redux
  •   
  • N3662 C ++动态数组
  •   
  • N3644 Null Forward Iterators
  •   
     

特征一个很简单,但有点乏味,迭代器一个   可能只影响调试模式,但其他两个是实质性的   工作。是否有人计划工作或    了吗?

然而,n3662也说:

  

我们建议不要采用C变长数组   为绑定元素数量的数组定义新工具   在建设中。我们将这些动态数组称为dynarray。

我无法在dynarray页面上使用快速CTRL + F找到gcc。那么dynarray即将实施,variable length arrays会留下还是会消失?

1 个答案:

答案 0 :(得分:9)

std::dynarray最初打算用c ++ 14。但是,后来决定将std::dynarray移动到“Array TS”,其中也可能包含一些std::array_view类。主要原因是委员会在某些情况下不同意有关堆分配与堆栈分配的一些观点(如果您尝试使用std::dynarray分配new,该怎么办)。因此,决定推迟。关于应该做些什么,仍有一些ongoing discussions

该类不适用于C ++ 14。它可能会带有Arrays TS或C ++ 17。

更新: std::dynarray不在C ++ 14中,不在C ++ 17中,Arrays TS已停止使用,因此可能不会不久之后,标准中接近std::dynarray的任何东西。如果我正确理解标准的当前位置,而不是神奇的运行时大小的数组,委员会宁愿为运行时大小的类提出一般解决方案,但到目前为止every suggestion已经拒绝。