一直在阅读一些严格的别名问题,例如Cast array of bytes to POD或Aliasing `T*` with `char*` is allowed. Is it also allowed the other way around?
从这些我收集到唯一的合法方式来访问内存位置声明是任何类型(特别是(数组)char
)as另一种类型是在其上调用new,因为这会改变动态类型。
由于std::aligned_storage通常必须具有除预期用途类型之外的基础类型,因此在我看来,如果不首先在其上调用new,则无法使用存储。
所以我不允许为其创建aligned_storage,例如一个double并使用它作为双指针转换?或者更确切地说,在我被允许通过指针转换来访问内存之前,我必须在它上面做一个新的位置,“把它变成”double类型的动态对象?