【问题标题】:Are there any supervision on implementations of C++?对 C++ 的实现有监督吗?
【发布时间】:2014-04-02 18:14:21
【问题描述】:

C++ 代码标准由国际标准化组织 (ISO) 定义。 C++ 有许多不同的实现,例如 GCC/G++、libc/libc++、clang (++ too)、Microsoft Visual C++、Intel C++ Compiler 等,因此任何人都可以制作自己的实现(编译器等、运行时库……)并将其称为 C++。

我想知道:

  • 是否有与 C++ 实现相关的学科?
  • 是否有任何组织(如 ISO)控制这些实施以确保它们符合标准?

【问题讨论】:

  • AFAIK,没有 100% 符合标准的实现......这真的是不可能的,因为标准本身就有错误。
  • 该标准是供供应商满足的指导方针,但没有人实施 100% 的标准,只有 100% 的标准。大多数编译器都有非标准添加,没有一个包含标准中的所有内容。例如,GNU/C++ 还没有完全实现 C++11 正则表达式(至少在我上次检查时)。没有强制执行;没有人有权说,“如果它不完全兼容,你就不能称它为 C++,不多不少。”市场倾向于规定实施大多是合规的,或者它们根本不会像其他更合规的实施那样成功。
  • @DavidO:仅供参考,正则表达式在主干中实现,并将在 GCC 4.9 (ref) 中实现。 (不是试图“纠正”你或任何事情(因为你没有错);只是想我会指出)

标签: c++ compiler-construction iso


【解决方案1】:

这完全取决于编译器供应商。

C++14 标准本身之所以成为developed openly on GitHub 的原因之一是,在此之前,供应商/实施者相对晦涩难懂,很难跟踪各种 WG 闭门造车的情况。

借助 C++14,ISO 试图让供应商提前了解这些变化,参与制定并了解对他们的期望,并在他们发现任何问题时发表意见。

AFAIK 许多编译器开发人员都是(并且一直是)ISO 委员会的成员,但并非所有人都能够及时实现所有事情。 众所周知,MSVC 花了一段时间来实现“noexcept”。 GCC 的 libstdc++ 非常落后,尽管它比 clang 的 libc++ 更优化了速度。

AFAIK,clang 是唯一的编译器 to have all c++11 and c++14 features done,然后是一些超出标准范围的编译器(请参阅该页面的下方)。 libc++ 也非常现代,完全支持 c++11(或者说完全支持 99%)。

希望 ISO 委员会现在制定的标准制定示例将为供应商设置标准,使其能够快速、正确地实施,而不是 10 年后。

【讨论】:

    猜你喜欢
    • 2016-10-29
    • 2017-09-04
    • 2017-11-10
    • 2013-01-02
    • 2014-02-11
    • 2012-01-13
    • 2017-12-08
    • 2017-07-07
    • 2020-11-09
    相关资源
    最近更新 更多