[英]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.