gpt4 book ai didi

c++ - C++14 中的可变长度数组?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:01 26 4
gpt4 key购买 nike

n3639建议通过 s 进入 C++14(至少对于第一个维度。)

但是latest I've been able to find将 n3639 列为:

Features in the first CD of C++14, subsequently removed to a Technical Specification

这是否曾被纳入技术规范,还是在交接过程中丢失了?

我的问题的原因是,我注意到这段代码:

void f(size_t n) {
int a[n];
for (size_t i = 0; i < n; ++i)
a[i] = 2 * i;
sort(a, a + n);
}

这无法在 Visual Studio 2015 和 gcc 中构建(当使用“-pedantic”标志时。)

<罢工> Works fine在 gcc5.1 下,但仍然是 fails to build在 Visual Studio 2015 下。

这只是 gcc 在 C++14 中错误地支持了 c99 的可变长度数组,还是它以某种方式进入了 C++14 而 Visual Studio 2015 未能将其提取出来?

编辑: 看起来 gcc 已经删除了 gcc6.2 中的支持: http://coliru.stacked-crooked.com/a/303ae1970fa3f5d2

最佳答案

首先,n3639正在寻找放置具有运行时绑定(bind)(ARB)而不是可变长度数组(VLA)的数组。 ARB 将支持 VLA 的子集,其中不包括:

  • multidimensional arrays, where other than the top level has a runtime bound (in analogy, array-new doesn't support that either)
  • modifications to the function declarator syntax
  • sizeof(a) being a runtime-evaluated expression returning the size of a
  • typedef int a[n]; evaluating n and passing that through the typedef

2014 年 2 月在华盛顿州伊瑟阔,在标准委员会 unanimously votedn3820 形成数组扩展技术规范, 它的初始修订源自 n3639 和 the proposal of Dynarrays .

2014 年 5 月 n4043n4050试图分别解决数组扩展技术规范的 Dynarray 和 ARB 部分中的一些“半编辑问题”。

但是the standard committee's October 24 2014 teleconference在语言设施、实现可能性和对数组扩展技术规范的期望方面存在巨大分歧,最终将其描述为处于不确定状态。

The standard committee's May 2015 meeting in Lenexa, Kansas继续给出阵列扩展技术规范不会以其当前形式被接受的方向性指导,并建议:

Stripping the TS of its current contents, and waiting for a workable proposal to come along[1]

最终 the standard committee's March 2016 meeting in Jacksonville, Florida在确认一些与阵列相关的提案改为针对库基础技术规范后,关闭了阵列扩展技术规范。有一个 unanimous vote to do so 8票强烈赞成,5票赞成,6票弃权。

顺便说一下,图书馆基础技术规范中唯一与数组相关的工作是允许通过make_array 运行时创建数组 . Bjarne Stroustrup ,C++ 的创造者,waxed eloquent on the topic :

We need arrays with run-time-specified bounds and safer access to such storage “yesterday”

遗憾的是,对于 Stroustrup 博士、我们和整个 C++ 社区来说, future 没有计划以简单的 c99 VLA 形式使用 C++ 复活 ARB/VLA。

关于c++ - C++14 中的可变长度数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40633344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com