std ::洗钱结合reinterpret_cast

时间:2018-08-27 12:55:21

标签: c++ language-lawyer reinterpret-cast

今天回答问题“ Range based for loop for heap allocated arrays ”时,我偶然发现了使用reinterpret_cast使用{{3}从指针类型转换为数组类型的建议}(经过讨论后,我们决定发布一个新问题,因为我们无法找到结论。)。强制转换如下进行(例如,为了能够使用基于范围的循环对数组进行迭代):

int* ptr = new int[3];
auto arr_ptr = std::launder(reinterpret_cast<int (*)[3]>(ptr));

我几乎可以确定这是UB,但我不确定。 有足够的C ++专家来回答这个问题吗?

我认为这可以归结为一个问题:reinterpret_cast在从ptr-type转换为array-type(我认为是UB)时是否有效,与我是否使用{{1} }。

0 个答案:

没有答案