std :: aligned_storage只能通过新的展示位置有效使用吗?

时间:2017-01-10 22:43:00

标签: c++ strict-aliasing

一直在阅读一些严格的别名问题,例如Cast array of bytes to PODAliasing `T*` with `char*` is allowed. Is it also allowed the other way around?

从这些我收集到唯一的合法方式来访问内存位置声明是任何类型(特别是(数组)char)as另一种类型是在其上调用new,因为这会改变动态类型。

由于std::aligned_storage通常必须具有除预期用途类型之外的基础类型,因此在我看来,如果不首先在其上调用new,则无法使用存储。

所以我不允许为其创建aligned_storage,例如一个double并使用它作为双指针转换?或者更确切地说,在我被允许通过指针转换来访问内存之前,我必须在它上面做一个新的位置,“把它变成”double类型的动态对象?

0 个答案:

没有答案