微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以将枚举类成员标记为已弃用?

如何解决是否可以将枚举类成员标记为已弃用?

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

但是,标准的 enum 弃用语法(如以下问题中所述)无法编译。 c++ mark enum value as deprecated?

这是我的期望:

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 的指点!事实证明,我使用的开发工具有自己的工具链和编译器版本,但该版本较旧。

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

我能够通过打印 module "eks_example_basic" { source = "terraform-aws-modules/eks/aws//examples/basic" version = "14.0.0" region = "us-east-1" } 的值来识别此购买。它是一个 ISO 样式日期的整数值(在我的例子中是 __cplusplus)来表示 cpp 标准版本。这也允许在启用和禁用功能时比较 LT/GT 版本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。