2

C++中有很多特性测试宏,它们提供了一种简单且可移植的方法来检测 C++ 标准和实验特性的存在。但是,我没有找到简单的宏来检查enum classes 是否受支持。是否有更简单直接的方法来检查enum class支持然后检查__cplusplus宏的值?

4

1 回答 1

1

不幸的是,没有便携式方法可以检测到这一点。

Boost 有一个宏,BOOST_NO_CXX11_SCOPED_ENUMS因此如果您在项目中使用 Boost,则可以使用该值。然而,他们是在编译器/版本的基础上设置它——这背后没有聪明的编码技巧。

如果 Boost 不适合您,那么您至少可以看看他们是如何做到的,如果您有幸使用他们在此处列出的编译器,则可以为您的目的复制部分代码:

Boost 编译器配置

于 2018-07-30T09:47:30.153 回答