如何static_assert 3项在编译时是这样的相同。最干净的方法static_assert oneline的3个或更多项目
union
{
std::uint32_t multibyte;
std::uint8_t bytes[4];
} test;
static_assert(sizeof(test) == sizeof(test.multibyte) == sizeof(test.bytes), "Union size mismatch.");
所以当然这里的static_assert失败,因为最后的检查将是1 == 4.是否存在更清洁的方式除了
static_assert(sizeof(test.bytes) == sizeof(test.multibyte) && sizeof(test) == sizeof(test.bytes), "Union size mismatch.");
是的,这将通过不同的设计修复这个例子。我正在寻找,如果有一些编译时间std :: equal/memcmp一样的解决方案.. – ckain
@ckain,更新了我的答案。 – Akira