27

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

但尽管如此,我只看到-std=c++98GCC 和其他编译器中的 switch,并且 Alf P Steinbach 发表了一些评论,暗示它可能确实是 C++98 的 TC。

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

4

2 回答 2

12

是和不是。

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

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

委员会自己的话来说

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

那里的无关时间只是按字面引用。

用维基百科的话(这不是权威,但如果它是错误的,应该修复):

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

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

于 2011-11-27T16:25:30.907 回答
1

这是一个全新的标准。我相信它最初只是一个 TC,这就是为什么会出现混淆,而且它实际上只是一个错误修复版本但是,发生了一些变化,值得知道您是在谈论 98 还是 03。

于 2011-11-27T13:16:42.210 回答