根据标准参考,
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;
}
}
打印出以下内容:
byte counts as enum
scoped enum counts as enum
我正在使用 clang15 和 g++12。这是错误还是功能?