【问题标题】:Is C++21 the Next Standard?C++21 是下一个标准吗?
【发布时间】:2016-08-05 12:48:32
【问题描述】:

即使在 C++11 推出时,我也听到了很多关于 C++17 和 C++14 的讨论。

但现在我知道 C++17 有望在 2017 年秋季交付(不含概念),但我仍然不确定以下标准是什么。

我听说 C++21 流行起来。准确吗?

【问题讨论】:

  • 等一下,让我启动我的时间机器,我会在 5 分钟前通知你。
  • 我……不完全确定这个问题是题外话还是题外话……
  • 我以为有人在讨论 2019 年发生的新标准,即 c++NEXT,因为 1z 已经是字母表中的最后一个。
  • ISOCPP 显示 C++20。
  • 当我坐在这里读这篇文章但还不熟悉 C++11 的那一刻......意识到我还有多少需要学习

标签: c++ standards c++14 c++17 revisions


【解决方案1】:

我们看到ISOCPP

这表明至少现在,C++20 是他们使用的名称。

【讨论】:

  • 我喜欢 1998-2001 甚至没有晋级。谁还需要那些年。
  • 显然他们觉得这些年不需要任何改进。
  • @Barry 令人惊讶的是,随着行业的所有变化,C++ 十年来一直保持相关性而没有更新。我想这是一个非常需要的细分市场。
【解决方案2】:

没有人可以确切地说出确切的发布日期。但是考虑到最近的 C++ 发布 C++11、C++14、C++17,我们的发布周期似乎是三年。

其实Herb Sutter wrote in June 2016:

注意:[...] 但现在我们将停留三年,因此 C++17 之后的下一个标准将是 C++20。

所以它很可能是 C++20。而到那时还没有准备好的所有功能,很可能会推迟到以后的 C++ 版本。

如果您对 C++ 开发感兴趣,我建议您定期阅读C++ subreddit。网上当然有many more resources

【讨论】:

    【解决方案3】:

    您会注意到 C++1z 仍在使用中,并且现在功能已完成。但它直到 2017 年发布后才成为 C++17。

    此时,我们不应该谈论 C++20 或 C++21,即使那是目标日期。我们应该谈论 C++2a 或 C++2x。

    目前的计划是 3 年的发布周期,有些人抱怨要改为 2 年的发布周期。不过官方还是3年,所以下一年的目标日期是2020年。

    但是,我们现在应该怎么称呼它? C++2x 遇到的问题是,如果 2020 年代有超过 3 个标准版本,我们的字母就会用完。每次发布 3 年,这将是 2020 年、2023 年、2026 年、2029 年——太多了。并且有人说要尝试 2 年的发布周期(甚至可能是 C++2x,2019 年发布,这在 2011 年 C++0x 发布之后会很有趣)。

    任何这样的混淆都值得吹嘘打破命名循环,并可能引入 C++2α 或 C++2Ω,这是另一个优点。

    因此,您的问题的答案是:此时下一个标准应该称为 C++2x,如果历史可以作为任何指导,x 可能是 -1 和 +3 之间的任何值:目标日期是 2020 年,但大约所有 C++ 标准版本中有一半没有在计划的那一年发布,因此请谨慎对待。

    【讨论】:

    • 所以你说这个名字应该区分它是否是一个发布的标准。我可以欣赏那里的细微差别,如果有正式名称,我不介意使用它。但是标准委员会玩得很快,在 C++17 上输了。我很少看到他们提到 C++1z。
    • @dhaumann 我们没有时间旅行。我们不知道下一个版本何时发布。因此,我们能做的最好的事情是 (A) 猜测它何时会发生,并且 (B) 为其制定一个明确的工作名称。从历史上看,50%(或更多?)的 C++ 标准在计划的那一年没有交付。他们声称他们会做得更好:并且有一些微弱的证据表明他们可能会(因为他们已经达到 1 次,并且连续 2 次处于正轨,并且计划是可靠的)。但我认为,讨论我们现在应该如何称呼它很重要。
    • 好的,我当然明白这一点。我认为最安全的方法是将其称为“下一个 C++ 标准”:-) PS:C++2α 和 C++2Ω 很好,但我们应该为提供出色 unicode 支持的 C++ 标准保留这些名称 :-)
    • 没有人谈论 C++1y 了;他们称之为 C++14。如果他们从一开始就这么称呼它,那么当我们回顾那些较早的讨论时,我们就不需要再问“哪个是 C++1y 了?”事实上,委员会中或与他们有关联的人几乎没有人使用“C++1z”;它一直是“C++ 17”。整个“1z”是用户创建的一个结构,以适应早已过时的“C++0x”模式。继续使用这种命名法是没有意义的。
    • 可以(并且委员会经常在邮件中这样做)将下一个标准称为 c++-next。这将解决 not enough-letters-past-z 问题。有点像 Debian,可以有稳定、测试和不稳定的版本。目前这类似于 -std=c++14、c++1z 和 c++-next。所以 c++-next 是目前提议的 CD 之外的东西。
    猜你喜欢
    • 2015-02-06
    • 2010-10-17
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多