c++ - 是否可以将枚举类成员标记为已弃用?
问题描述
我已经养成在 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
什么?
解决方案
感谢@Chipster 的指点!事实证明,我使用的开发工具有它自己的工具链和编译器版本,它比较旧。
我的标准工具链是最新的,但没有被调用。
我能够识别这个购买打印的价值__cplusplus
。它是一个 ISO 样式日期的整数值(201103
在我的例子中),代表 cpp 标准版本。这也允许在启用和禁用功能时对版本进行 LT/GT 比较。
推荐阅读
- r - 尝试在 r 中使用 lm() 和年份
- javascript - 如何在我的 Word 计数器中获得一个列表框?
- oracle - 在 Oracle 中授予角色查询权限不起作用
- arrays - Laravel syntax error in trying to load simple view: unexpected '=>' (T_DOUBLE_ARROW), expecting ']'
- javascript - 将类的静态方法转换为变量打字稿
- gstreamer - 缺少 gstreamer 插件
- python - 什么是'NameError: name 'R' is not defined'错误,我们如何纠正它?
- javascript - 尝试使用 map.filter 写出一系列元素来过滤我的结果时出错
- java - Having an OutputStream write in a C buffer using JNI
- python - Python:如何从 3D 坐标集合创建曲面图