使用std::bit_cast处理位域结构体为何无法实现constexpr?
编译时从位域结构体获取位掩码:std::bit_cast的constexpr失效问题
我想在编译时从位域结构体中获取位掩码,尝试用std::bit_cast实现——因为它本身支持constexpr特性。
测试代码如下:
#include <bit> struct Bitfield { int :3; int x:3; }; constexpr int mask() noexcept { Bitfield bf{}; bf.x -= 1; return std::bit_cast<int>(bf); } int test() { int mask1 = mask(); // constinit static int mask2 = mask(); // 为何无法编译? return 0; }
目前这段代码只能在运行时计算位掩码,constexpr特性并未生效。但cppreference并没有将这种情况列为std::bit_cast无法使用constexpr的情形,我不清楚问题出在哪,想问这个方案是否还有可行的可能?
内容的提问来源于stack exchange,提问作者sh-
相关产品推荐
相关产品推荐

