为什么不选择正确的过载?我得到了错误:
void f() {}
int f() { return 0; }
int main() {
void (&x)() = f;
x();
}
最佳答案
根据C++标准13.2.1
这意味着只考虑名称和参数类型。返回类型不是。
这是有道理的,因为您可以调用带有返回值的函数,而忽略其返回值。如果语言设计者允许在返回类型上重载,则编译器将无法在某些合法的上下文中解决这些重载。
关于c++ - 为什么编译器无法为此函数引用找到正确的重载?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14150134/