【发布时间】:2019-10-12 11:21:53
【问题描述】:
它只是一个简单的编译测试。 gcc 接受以下内容,而 clang 和 msvc 拒绝它:https://godbolt.org/z/DlUasL
float test()
{
return reinterpret_cast<float&&>(0x7F800000);
}
按照标准,哪一个是对的?
【问题讨论】:
-
很确定无论如何都会是 UB,因为这里没有
float别名。 -
是的,它源自更“常见的”
reinterpret_cast<float&>(variable)模式。