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

时间:2017-12-12 23:16:56

标签: c++ c++17

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

enum class foo : std::byte
{
    bar = 1,
    baz = 2
};

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

编辑:我不是要解决任何特定问题。显然enum class whatever : unsigned char会这样做。但是,我期待std::byte更灵活一点,并想知道这是否可行。

2 个答案:

答案 0 :(得分:8)

std::byte defined by the standardenum class。因此,它具有基础类型(unsigned char)。因此,您可以创建具有相同基础类型的枚举:

enum class foo : std::underlying_type_t<std::byte>
{...};

答案 1 :(得分:3)

您可以改用unsigned charuint8_t