gpt4 book ai didi

c++ - 使用 std::aligned_storage 对齐静态数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:30 26 4
gpt4 key购买 nike

我正在尝试使用 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
}

我得到以下编译错误:

no match for «operator[]» in «mas[0]»

然后我尝试使用显式指针转换:

float* mas_ = reinterpret_cast<float*>(mas); 

但这也会产生编译错误:

invalid cast from type «float_16 {aka std::aligned_storage<32u, 16u>::type}» to type «float*»

谁能建议我如何使用 std::aligned_storage 正确对齐静态数组?

最佳答案

您可以使用:

float* floats = new (&mas) float[SIZE];

然后你可以使用:

floats[0] = 1.f;

根本没有reinterpret_cast :)

关于c++ - 使用 std::aligned_storage 对齐静态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com