C++11引入了
这是我们可以采取的措施:
alignas
指示符来指定变量的对齐方式,以及alignof
操作符来查询特定类型的默认对齐方式。但是,我没有找到获取特定变量对齐方式的方法。让我们看下面这个简单的例子:alignas(16) float* array;
这是我们可以采取的措施:
alignof(float*)
返回 8,显然不是我们想要的。alignof(array)
返回 16,正好是我们想要的,但这是编译器扩展;根据标准指定的alignof
不能用于特定变量。alignof(decltype(array))
返回 8,这是可以预料的,但不是我们想要的。std::alignment_of
是基于alignof
实现的,因此没有太大帮助。
array
是否在 16 字节边界上对齐。标准中是否有任何方法来执行这样的查询?