gpt4 book ai didi

c++ - 为什么这个右值引用绑定(bind)到左值?

转载 作者:IT老高 更新时间:2023-10-28 21:57:46 28 4
gpt4 key购买 nike

我不明白为什么以下代码在 GCC 8.0 上编译:

decltype(auto) foo(int&& r) {
return r;
}

foo中,r的声明类型为int&&,所以foo的返回类型为还有 int&&。但是r本身就是一个左值,左值不能绑定(bind)到右值引用。

我错过了什么吗?

最佳答案

根据[dcl.spec.auto]/5 ,则推导出返回类型,就好像 return 语句的操作数是 decltype 的操作数一样。和[dcl.type.simple]/(4.2)明确指出,由于操作数没有括号,实体的类型是decltype产生的类型,即int&&。事实上, r 是一个左值( [expr.prim.id.unqual] )。

幸运的是,这已被发现并归档为 bug 64892两年前。 (我想知道为什么没有人能抽出时间来解决这个问题?)

关于c++ - 为什么这个右值引用绑定(bind)到左值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532034/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com