Moh*_* Li 2 c++ enums type-traits std-byte
根据标准参考,std::is_enum_v枚举类型的计算结果为 true,否则为 false。枚举类型以枚举键开头,即枚举、枚举类或枚举结构之一。
编写了以下测试程序:
#include <type_traits>
#include <iostream>
using to_examine = std::byte;
enum class Foo {
ONE,
TWO
};
int main() {
if constexpr (std::is_enum_v<std::byte>) {
std::cout << "byte counts as enum" << std::endl;
}
if constexpr(std::is_enum_v<int>) {
std::cout << "int counts as enum" << std::endl;
}
if constexpr(std::is_enum_v<Foo>) {
std::cout << "scoped enum counts as enum" << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
打印出以下内容:
byte counts as enum
scoped enum counts as enum
Run Code Online (Sandbox Code Playgroud)
我正在使用 clang15 和 g++12。这是一个错误还是一个功能?
std::byte由标准定义为枚举类型。
请参阅std::byte文档:
Run Code Online (Sandbox Code Playgroud)enum class byte : unsigned char {}; // (since C++17)
如果您对这样定义的原因感兴趣,这里有一些信息:
std::byte(添加到标准的提案)std::byte枚举类而不是类?| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |