【问题标题】:GCC 4.5 C++0x forward compliance to C++11GCC 4.5 C++0x 向前兼容 C++11
【发布时间】:2013-06-25 03:33:00
【问题描述】:

我需要在一个大型项目中使用 GCC 4.5.x。我正在尝试解释this page 上的以下声明:

重要提示: GCC 对 C++11 的支持仍是实验性的。 一些 功能是基于早期提案实现的,没有尝试 将在更新时保持向后兼容性 以匹配最终的 C++11 标准。

如果我在 4.5 中使用 -std=c++0x 启用 C++11 功能,我需要知道代码将在完全兼容的编译器(例如 4.8)上正确编译。换句话说,4.5 中的所有(可能是一些)C++0x 特性是否与最终的 C++11 标准具有相同的语法和语义?

【问题讨论】:

  • 我在一些项目中使用 gcc 4.4 到 4.8,我个人没有遇到任何关于 C++11 的问题。你不能用 4.8 编译它来仔细检查吗?对于几乎任何你可以依赖的“如果它用 4.5 编译,它用 4.x 编译”x >= 5。

标签: gcc c++11 standards-compliance


【解决方案1】:

如果我在 4.5 中使用 -std=c++0x 启用 C++11 功能,我需要知道代码将在完全兼容的编译器(例如 4.8)上正确编译。

艰难;您引用的段落明确指出没有这样的保证。

换句话说:

4.5 中的所有(可能有一些)C++0x 特性是否与最终的 C++11 标准具有相同的语法和语义?

没有。

选择“一些,也许全部”,两者都不依赖。

【讨论】:

  • 文章说不能保证对临时功能的向后兼容性。我对相反的情况感兴趣,即在过渡期间实现的功能是否向前兼容最终标准。
  • @ThomasMcLeod:从 4.5 到 4.8 的向前兼容性与从 4.8 到 4.5 的向后兼容性相同。
  • 不完全是,因为 4.5 的维护版本可能会使不合规的功能符合最终标准。
  • 4.5 的最后一个维护版本是 2012 年 7 月 2 日的 4.5.4
  • @ThomasMcLeod:我指的是 4.5 的最新版本,无论您查询兼容性时可能是什么版本。您引用的段落涵盖了所有内容;就那么简单。此外,维护版本通常不会执行您赋予它们的功能——新的次要版本(4.6、4.7、4.8)的全部意义在于实现重大更改,例如对 API 或标准的大规模更改库实现。
猜你喜欢
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 2015-11-17
  • 2018-10-29
相关资源
最近更新 更多