std::align
1 将用于存储的内存区域对齐到特定的二次方对齐。
如果对齐值不是 基本或扩展对齐 值,这显然会调用 UB。有什么方法可以在编译时(例如
static_assert
)或运行时检查我想使用的值是否受支持?
1 需要说明的是,如果
std::alignas
或 std::aligned_storage
更灵活或者允许我安全地检查支持的内容,我也持开放态度。
这是 LWG 2377,它在 C++17 中得到修复。在问题描述中指出
用户甚至无法确定一个值是“基本对齐值还是在此上下文中实现支持的扩展对齐值”
感谢 C++17 中的更改,您不再需要担心检查无法检查的东西。