上篇文章中留下了两个问题,这里终于有了答案。
C++11标准中,对alignas的说明在这里,中文版在这里。
在文档中,并没有提到像网上其他资料说的那样,alignas的参数只能是8,16,32,64,128等,且最小是8。
经过上机测试,alignas的参数必须是 2 的幂,也就是说,最小可以是0。写入不是 2 的幂参数会报错。写入参数合法但是小于结构体自身对齐值时,alignas设置无效。
另外可见,当alignas的参数大于结构体自身对齐值时,并不会像C语言那样取结构体自身对齐值作为有效对齐值。
#include <iostream>
usi