C++03 是 C++ 标准的新版本还是只是 C++98 的技术勘误表 (TC)?

问题描述 投票:0回答:2

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

但尽管如此,我只看到 GCC 和其他编译器中的

-std=c++98
切换,并且 Alf P Steinbach 做了一些一些评论暗示它可能确实是 C++98 的 TC。

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

c++ language-lawyer standards iso c++03
2个回答
12
投票

C++03 (ISO C++14882:2003) 本身就是一个标准,它也“只是”TC1,因为它只是 C++98 的一组修正。

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

委员会自己的话

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

其中多余的句点只是逐字引用。

Wikipedia

的话来说(这不是权威,但如果有错应该修正):

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

然而,有人可能会说,
值初始化

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


1
投票

变化,值得知道你是在谈论 98 还是 03。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.