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

标签 c++ standards iso c++03

我很确定我在某处的权威来源(我相信它在 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 一样。

最佳答案

是和不是。

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

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

the committee's own words :

“The first edition of ISO/IEC 14882 was published in 1998. A technical corrigendum was approved in 2003, . and the standard was published again as the 2003 edition.”

这里的无关句号只是按字面引用。

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

“For some years after the official release of the standard, the committee processed defect reports, and published a corrected version of the C++ standard, ISO/IEC 14882:2003, in 2003.”

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

关于c++ - C++03 是 C++ 标准的新版本还是只是 C++98 的技术勘误 (TC)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8285777/

相关文章:

asp.net-mvc - ASP.NET MVC - View 模型模式

c# - 通过加密数据生成MAC

c++ - 将数组内容传递给特定函数时数组内容会发生变化

C++ std::map std::bitset 段错误

c++ - 一旦成为标准的一部分——boost 库会失去其 boost 命名空间并移至 std 吗?

枚举成员可以是 ANSI-C 中数组的大小吗?

swift - Nil 不能分配给类型 'Timer' 吗?

microservices - 平均响应时间与平均周转时间 (DIN_IEC_25023) 差异?

c++ - C++中的现代解释器代码?

c++ - 将可选属性表示为 C++ 类成员