C++ 无法初始化以std::byte作为成员类型的位字段

C++ 无法初始化以std::byte作为成员类型的位字段,c++,bit-fields,c++20,C++,Bit Fields,C++20,在C++20中,位字段的默认成员初始值设定项是可能的。但是这个特性似乎不可能与std::byte一起使用 struct Test { std::byte a : 2 = std::byte{0}; // NOK uint8_t b : 2 = 0; // OK }; 是G++-10(我正在使用的版本)中的故意或bug。< /P> < P>固定在GCC中继线(版本10)中。位字段是C++的一部分,因为史前时代。这与C++20无关。C++20中的新功能是初始化器。这就是问题所在

在C++20中,位字段的默认成员初始值设定项是可能的。但是这个特性似乎不可能与
std::byte
一起使用

struct Test {
    std::byte a : 2 = std::byte{0}; // NOK
    uint8_t   b : 2 = 0; // OK
};

是G++-10(我正在使用的版本)中的故意或bug。< /P> < P>固定在GCC中继线(版本10)中。

位字段是C++的一部分,因为史前时代。这与C++20无关。C++20中的新功能是初始化器。这就是问题所在。从clang和g++live中获得不同的结果:可能还没有完全实现?@RichardCriten可以用以下命令确认您的结果。使用clang HEAD编译工作正常,而gcc HEAD失败,错误为:无法在初始化中将“std::byte”转换为“unsigned char:2”