【问题标题】:How can I check at compile-time whether compiler support C++11 override keyword? [duplicate]如何在编译时检查编译器是否支持 C++11 覆盖关键字? [复制]
【发布时间】:2014-02-28 08:17:26
【问题描述】:

如何在编译时检查编译器是否支持 C++11 override 关键字?也许提升或类似的东西?

【问题讨论】:

  • 吹毛求疵:override 不是关键字。
  • @Snps 我要指出,关于该问题的公认解决方案不适用于[[override]],因为 Boost 不支持它。因此,IMO 将这个问题作为重复项关闭是一个坏主意。
  • 第二个最受欢迎的答案 (__cplusplus) 应该可以,不是吗?引用评论:“C++11 将 __cplusplus 的值设置为 201103L。这表明完全符合 2011 标准;”这可能无法捕获支持覆盖但不支持完整 c++11 标准的浏览器。在我看来,这对override 来说既不漂亮也不值得。

标签: c++ boost c++11 standards-compliance


【解决方案1】:

不存在直截了当的方法。有两种方式:

  1. 使用旧的autoconf 或其他构建系统中的相应功能。 cmake 有一个,scons 和任何其他系统也有。

  2. 仔细检查已知支持这些功能的编译器版本。幸运的是,最近编译器列表缩减到了 3 个(clang、gcc 和 msc++),Boost 维护者拥有done some of the work(似乎他们并不关心override 功能)。

【讨论】:

  • 据我所知,boost 没有合适的宏来检查覆盖支持
猜你喜欢
  • 1970-01-01
  • 2016-12-30
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2011-09-04
相关资源
最近更新 更多