繁体   English   中英

将函数绑定到右值引用

[英]Binding function to rvalue reference

以下工作原理如何?

double doubleVal(double val) {
    return val*2;
}

int main()
{
    double myVal = 3.0;
    double(*&&ptr)(double) = &doubleVal; // Why?
}

我不明白为什么函数地址可以转换为右值引用。不是左值吗?

编译器将语法识别为函数指针

double(*ptr)(double) = &doubleVal;

附加的&&应用于ptr,而不是ptr指向的函数的属性

double(*&&ptr)(double) = &doubleVal;

接受对右值的引用 ,右边的东西右值-在将它存储在ptr之前没有名称或地址。

return &(&doubleVal); // warning - returning address of temporary

您的代码基本上是在问为什么:

using T = ...;
T someVal;

T*&& ref = &someVal;

作品。 someVal是一个左值, &someVal是一个prvalue ,这是一种右值。 任何右值均可用于初始化右值引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM