【发布时间】:2019-07-18 02:59:43
【问题描述】:
我想知道为什么下面的代码是正确的:
void foo(){}
void foo2(void(*)()){};
void foo3(void(*)()&){};
int main(){
foo; // type void(&)() lvalue
foo2(foo); // void(&)() -> void(*)() function to pointer conversion
foo3(foo); // ?? conversion
}
根据function to pointer转换here
函数类型 T 的左值可以转换为“指向 T 的指针”类型的纯右值。 结果是一个指向函数的指针。
从 void(&)() 到 void(*)() 的转换很好,但不是 void(*)()&。
这段代码sn-p(尤其是??行)正确的原因是什么?
【问题讨论】:
标签: c++ type-conversion implicit-conversion