用于检查枚举 类 是否可用的简单宏

Simple macros to check if enum classes are available

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

遗憾的是,没有可移植的方法来检测这一点。

Boost 有一个名为 BOOST_NO_CXX11_SCOPED_ENUMS 的宏,因此如果您在项目中使用 Boost,则可以使用该值。然而,他们将其设置为 compiler/version 基础 - 这背后没有巧妙的编码技巧。

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

Boost compiler configurations