为什么我们看不到允许返回类型中具有多态性的callables的类C语言?我可以看到附加类型推断是如何成为障碍的,但是我们有很多语言都有完整的类型推理系统(适用于不同级别的"工作").
编辑:返回类型多态性我的意思是仅在返回类型中重载函数签名.例如,C++和Java只允许在形式参数的类型中重载,而不是在返回类型中.
如果通过"返回类型多态"指的是基于返回值类型的重载,我不确定其他语言,但对于C++,这里的答案(几乎来自马的嘴):
函数返回类型不会在重载解析中发挥作用,因为Stroustrup(我假设其他C++架构师的输入)希望重载解析为"上下文无关".请参见"C++编程语言,第三版"中的7.4.1 - "重载和返回类型".
原因是保持单个运算符或函数调用的分辨率与上下文无关.
他们希望它仅基于如何调用重载 - 而不是如何使用结果(如果它被使用的话).实际上,在不使用结果的情况下调用许多函数,或者结果将被用作更大表达式的一部分.当我们确定这一点时,我肯定会发挥作用的一个因素是,如果返回类型是解决方案的一部分,那么将会有许多调用重载函数需要使用复杂规则解决或者必须让编译器抛出呼叫不明确的错误.
而且,主知道,C++重载分辨率足够复杂,因为它代表......