【发布时间】:2021-10-05 02:55:13
【问题描述】:
我 recently learned 认为通过 reinterpret_casting 其地址将 POD 重新解释为不同的 POD 是未定义的行为。所以我只是想知道reinterpret_cast 的潜在用例可能是什么,如果它不能用于它的名字所暗示的那样?
【问题讨论】:
-
@m88 不,您不能为此使用
reinterpret_cast。使用static_cast。 -
@463035818_is_not_a_number 关于已删除答案的 cmets 中的请求,这里是缺陷报告:open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1839r2.pdf
-
reinterpret_casthere 的用例列表。请注意,这些用例中的大多数实际上都没有用。例如,将一个对象转换为它自己的类型,或者只是允许在两种类型之间来回转换,而中间值否则将无法使用(例如,可以将A转换为B,但使用B是UB,不过它可以转换回A)。 -
如果标题更客观,我认为这个问题不会被关闭(例如“什么是 reinterpret_cast 的明确用例?”。也许重新命名它会看到它重新打开。
标签: c++ casting c++17 reinterpret-cast type-punning