首页 > 解决方案 > 是否可以将枚举类成员标记为已弃用?

问题描述

我已经养成在 C++ 中使用新枚举类(或强枚举)的习惯。现在,我需要弃用一个成员。

但是,如以下问题中所述,标准枚举弃用语法无法编译。 c++ 将枚举值标记为已弃用?

这是我的期望:

enum class MyEnum {
    ORIGINAL [[deprecated("Use `PRIMARY` instead.")]] = 1,
    PRIMARY = 1,
    SECONDARY = 2,
    THIRD = 3
};

结果:

...: error: expected '}' before '[' token
     ORIGINAL [[deprecated]] = 1,
              ^

乍一看,我可以看到此语法适用于enum MyEnum ...,而不是enum class MyEnum ....

我似乎在 CPP Reference 上也找不到任何关于它的信息: https ://en.cppreference.com/w/cpp/language/attributes/deprecated

我是否遗漏了什么,或者弃用成员的适当方法是enum class什么?

标签: c++deprecatedenum-class

解决方案


感谢@Chipster 的指点!事实证明,我使用的开发工具有它自己的工具链和编译器版本,它比较旧。

我的标准工具链是最新的,但没有被调用。

我能够识别这个购买打印的价值__cplusplus。它是一个 ISO 样式日期的整数值(201103在我的例子中),代表 cpp 标准版本。这也允许在启用和禁用功能时对版本进行 LT/GT 比较。


推荐阅读