C++ 将函数绑定到右值引用
以下是如何工作的C++ 将函数绑定到右值引用,c++,C++,以下是如何工作的 double doubleVal(double val) { return val*2; } int main() { double myVal = 3.0; double(*&&ptr)(double) = &doubleVal; // Why? } 我不明白为什么函数地址可以转换为右值引用。。它不是左值吗?编译器将语法识别为函数指针 double(*ptr)(double) = &doubleVal; 附加的&&
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中之前没有名称或地址
您的代码基本上是在问为什么:
using T = ...;
T someVal;
T*&& ref = &someVal;
工作。someVal是左值,someVal是a,这是一种右值。任何右值都可用于初始化右值引用
using T = ...;
T someVal;
T*&& ref = &someVal;