【问题标题】:Is C++03 a new version of the C++ Standard or just a Technical Corrigendum (TC) of C++98?C++03 是 C++ 标准的新版本还是只是 C++98 的技术勘误 (TC)?
【发布时间】:2012-01-07 07:37:51
【问题描述】:

我很确定我在某处的权威来源(我相信它在 WG21 页面上)读到 C++03 不是 C++98 的技术勘误,但它是 C++ 标准的新版本。

但我只在 GCC 和其他编译器中看到 -std=c++98 开关,并且 Alf P Steinbach 提出了 few comments 暗示它可能确实是 C++98 的 TC。

所以当我写“C++03”时,提到C++98就足够了吗?作为一个相关的问题,使用术语“C++03”是否甚至错误?因为我觉得如果真的是C++98 TC1,那么在我看来就不能叫C++03了。就像我从未见过有人为 C99TC3 版本编写 C07 一样。

【问题讨论】:

  • 为什么这在实践中很重要?
  • @Mat 我想写正确的文字。
  • ISO/IEC 14882:2003 是 ISO/IEC 14882 的第二版,之前的版本是 14882:1998。两者都是已发布的、ANSI 批准的标准。据2003年转发:“此第二版取消并取代第一版……”。
  • @Mat:在实践中为什么重要?
  • 这个FAQ解释了C++98和C++03的关系。

标签: c++ standards iso c++03


【解决方案1】:

是和不是。

C++03 (ISO C++14882:2003) 本身就是一个标准,它也是“只是”TC1,因为它只是对 C++98 进行了一系列修正。

您可以说 C++03 是 C++98 的本意,C++98 的实际措辞经过修改以使其表达其本意。

the committee's own words:

“ISO/IEC 14882 的第一版于 1998 年发布。技术勘误于 2003 年获得批准,.该标准作为 2003 年版再次发布。”

里面多余的句号只是字面引用。

Wikipedia的话来说(不是权威,错了就改):

“在标准正式发布后的几年里,委员会处理了缺陷报告,并于 2003 年发布了 C++ 标准的更正版本 ISO/IEC 14882:2003。”

然而,有人可能会争辩说,值初始化是一个新事物,而不仅仅是一个修正。有人可能会争辩说,技术勘误本身只包含更正,而用这些更正修改的标准是另一回事,一个新标准。在我看来,这两种观点都具有上下文意义,尽管不是绝对独立于上下文的陈述。

【讨论】:

  • 所以委员会说他们将其批准为 TC,但 iso 从中制定了非 TC 新标准?
  • @Johannes:不,他们没有说“非 TC”。用死树版本封底的话来说,C++03 是“完整的、当前的国际 C++ 标准,包含技术勘误 1/这在技术上是 BS ISO/IEC 14882:2003(第二版),经所有人批准国家标准机构(如 ANSI)。它是该标准唯一可用的绑定版本。不过,我不确定那里的 BS 是什么意思。
  • @AlfP.Steinbach:英国标准。 BSI 是唯一一个发布绑定死树版 AFAIK 的标准机构。
  • 以防万一有人试图从 wikipedia 中找到 qoute 却找不到它:可能在更新 wikipedia 条目以包含更新标准的过程中,此处引用的句子发生了变化,它现在说:“2003 年,它[委员会]发布了名为 ISO/IEC 14882:2003 的新版 C++ 标准,修复了 C++98 中发现的问题。”这或多或少是一样的
  • @Cheersandhth.-Alf 你认为“这在技术上是废话”是什么意思?
【解决方案2】:

这是一个全新的标准。我相信它开始只是一个 TC,这就是发生混淆的原因,而且它实际上只是一个错误修复版本。但是,发生了变化,值得知道您是在谈论 98 还是 03。

【讨论】:

  • “但是,发生了一些变化,值得知道您是在谈论98还是03。”:例如?
  • @akappa: std::vector 只要求它的元素从 03 开始​​是连续的,例如。我不同意这很重要。任何关心 C++98 行为的人都会知道他们应该指定这一点。只是询问“C++”的人可能正在寻找一个实用的答案,因此想知道当前标准的行为,以及他们的编译器将支持什么。由于我们现在使用 C++11,因此 C++98 实际上与此类问题无关。
  • @GManNickG 问题是明确询问 C++03 与 C++98,而不仅仅是“C++”。区别远非无关紧要 - 遗留软件 yadda yadda。
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多