是否可以使用std :: byte作为枚举类的基础类型?

344*_*442 5 c++ c++17

由于std::byte根据定义不是整数类型,因此以下片段是不正确的:

enum class foo : std::byte
{
    bar = 1,
    baz = 2
};
Run Code Online (Sandbox Code Playgroud)

在C++ 17中是否有办法做与此相同的事情?

编辑:我不是要解决任何特定问题.显然enum class whatever : unsigned char会这样做.但是,我希望std::byte能够更加灵活,并且想知道这是否可行.

Nic*_*las 8

std::byte由标准定义为一个enum class.因此,它具有基础类型(of unsigned char).因此,您可以创建具有相同基础类型的枚举:

enum class foo : std::underlying_type_t<std::byte>
{...};
Run Code Online (Sandbox Code Playgroud)

  • @ 3442:但是`byte`不应该是一个整数; 这有点类型.所以更好的问题是为什么要创建一个使用`byte`作为其底层类型的枚举. (3认同)