如何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