首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从rvalue到rvalue引用的reinterpret_cast

从rvalue到rvalue引用的reinterpret_cast
EN

Stack Overflow用户
提问于 2019-05-26 19:17:07
回答 1查看 682关注 0票数 10

它只是一个简单的编译测试。gcc接受以下内容,而clang和msvc拒绝它:https://godbolt.org/z/DlUasL

代码语言:javascript
复制
float test()
{
    return reinterpret_cast<float&&>(0x7F800000);
}

根据标准哪一个是正确的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-26 19:24:45

reinterpret_cast表达式寻求执行的转换不在reinterpret_cast可以执行的[expr.reinterpret.cast]/1转换列表中。0x7F800000是一个整数类型的文字。唯一可以将整数类型的值转换为其他类型的转换reinterpret_cast是将这样的值转换为指针类型[expr.reinterpret.cast]/5float&&是引用类型,而不是指针类型。转换为引用类型的唯一转换reinterpret_cast是转换glvalue表达式[expr.reinterpret.cast]/110x7F800000不是一个glvalue。因此,此代码格式不正确。GCC会接受这一事实,这对我来说是相当令人惊讶的,我要说的是,这绝对是一个应该被…报告的错误。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56316648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档