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

问题描述 投票:2回答:1

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

c++ c++11 c-preprocessor enum-class
1个回答
1
投票

不幸的是,没有可移植的方式来检测这一点。

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

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

Boost compiler configurations

© www.soinside.com 2019 - 2024. All rights reserved.