为什么c++ 17向名称空间和枚举数添加属性?
Why is C++17 adding attributes to namespaces and enumerators?
正如问题所述,我知道c++ 17中将有名称空间和枚举数的属性。这将如何影响我们的代码?这些属性是什么?它们将允许我们做什么?我找不到任何好的资源来理解这个新功能。
当前,如果要贬值特定的枚举值,则需要依赖编译器扩展。例如,在clang中,您可以按照以下方式指定不推荐的enum值:
enum OperationMode {
OM_Invalid,
OM_Normal,
OM_Terrified __attribute__((deprecated)),
OM_AbortOnError __attribute__((deprecated)) = 4
};
一旦枚举和命名空间支持属性,就会有一种标准的跨编译器方式来实现类似的功能:
enum OperationMode {
OM_Invalid,
OM_Normal,
OM_Terrified [[deprecated("re-named to invalid")]],
OM_AbortOnError [[deprecated("exceptions are used instead")]] = 4
};
其他属性可能有一天会发现与名称空间和枚举值相关,但正如提案作者所述:
本文建议通过允许属性来解决这些问题在枚举数和名称空间上指定,并扩展[[弃用]]属性应用于这些实体,就像最初一样目的。
相关文章:
- 不带大括号的枚举形式
- 枚举环境变量的惯用C++14/C++17方法
- 类似枚举的计算常量
- 如何正确实现和访问运算符的各种自定义枚举器
- 错误:从"int"到枚举c++的转换无效
- C++中构造函数中的枚举
- 为每个枚举器添加代码
- 在C++中向枚举添加"all"选项的好设计是什么?
- 在范围内添加位操作和转换式的枚举 - 圣诞节探索
- 在头强制重新编译中定义的c++枚举的末尾添加值
- 如何从班级学生中的枚举中添加和删除价值
- 自动为枚举添加类似 Java 枚举的功能
- 在何处为枚举添加覆盖运算符<<
- 将枚举器添加到枚举中是否会破坏 ABI
- 向C++枚举添加值
- 在类中添加枚举定义会破坏其二进制向后兼容性吗?
- 为什么c++ 17向名称空间和枚举数添加属性?
- 如何添加枚举类型以引用数组
- 使用枚举向向量添加的问题
- 当试图添加类构造时,C++未设置枚举类型