我正在尝试使用std::aligned_storage模式实现简单静态数组的 16 字节对齐:
#include <type_traits>
int main()
{
const size_t SIZE = 8;
using float_16 = std::aligned_storage<sizeof(float) * SIZE, 16>::type;
float_16 mas;
new(&mas) float[SIZE];//Placement new. Is this necessary?
mas[0]=1.f;//Compile error while attempting to set elements of aligned array
}
我收到以下编译错误:
«mas[0]» 中的 «operator[]» 不匹配
然后我尝试使用显式指针转换:
float* mas_ = reinterpret_cast<float*>(mas);
但这也会产生编译错误:
从类型 «float_16 {aka std::aligned_storage<32u, 16u>::type}» 到类型 «float*» 的无效转换
谁能建议我如何正确使用std::aligned_storage对齐静态数组?