为什么不选择正确的过载?我得到了错误:


void f() {}
int f() { return 0; }

int main() {

    void (&x)() = f;

    x();

}

最佳答案

根据C++标准13.2.1



这意味着只考虑名称和参数类型。返回类型不是。

这是有道理的,因为您可以调用带有返回值的函数,而忽略其返回值。如果语言设计者允许在返回类型上重载,则编译器将无法在某些合法的上下文中解决这些重载。

关于c++ - 为什么编译器无法为此函数引用找到正确的重载?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14150134/

10-09 18:20
查看更多