首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >static_assert c++11的可用性

static_assert c++11的可用性
EN

Stack Overflow用户
提问于 2015-05-15 18:04:00
回答 1查看 741关注 0票数 0

我想在我工作的代码库中开始使用static_assert。不幸的是,并不是所有的C++编译器都支持它们。在过去,我们使用了编译时断言宏,这个宏对于我尝试过的所有编译器都是合理的(从SO!收集到的),但是它给出了一些尴尬的编译错误消息。

我们支持大量编译器,包括那些不支持static_assert的编译器。另外,因为我们的产品是一个带有源代码的SDK,我们的客户可以用他们想要的任何编译器重新编译它。因此,虽然我可以在我们使用的所有编译器中介绍条件编译,但是对于任何“未知”编译器,我都不可能这样做。

是否有一些编译时预定义的宏或其他工具是所有C++编译器中用于确定static_assert可用性的标准工具,还是只需要“知道”每个编译器支持什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-18 02:01:35

在C++14中,有特征测试宏,它允许您概括C++11/14/17特性的使用。对于static_assert,宏是__cpp_static_assert

如果您的编译器本身并不支持这些(尚未),您可以根据编译器所支持的内容进行定义,但它们将与任何标准化的“未知”编译器向前兼容。

注意:这个答案是从我提出的将这个问题推广到任何C++11特性(C++11特性的可用性)的问题中得到的。我认为对于这个特定案例的动机有一些困惑,所给出的答案试图提供一个很好的静态断言,而不是实际问到的问题(实际上他们并没有这么做)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30266009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档