我正在尝试使用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来对齐静态数组吗?
new
返回的指针? - avakarnew
返回的指针没有扩展对齐方式。 - R. Martinho Fernandes