是否可以在编译时或运行时检查 std::align 的限制?

问题描述 投票:0回答:1

我想使用

std::align
1 将用于存储的内存区域对齐到特定的二次方对齐。

如果对齐值不是 基本或扩展对齐 值,这显然会调用 UB。有什么方法可以在编译时(例如

static_assert
)或运行时检查我想使用的值是否受支持?


1 需要说明的是,如果

std::alignas
std::aligned_storage
更灵活或者允许我安全地检查支持的内容,我也持开放态度。

c++ c++11 alignment language-lawyer memory-alignment
1个回答
0
投票

这是 LWG 2377,它在 C++17 中得到修复。在问题描述中指出

用户甚至无法确定一个值是“基本对齐值还是在此上下文中实现支持的扩展对齐值”

感谢 C++17 中的更改,您不再需要担心检查无法检查的东西。

© www.soinside.com 2019 - 2024. All rights reserved.