3 ms·
As explained in the post, function call is a full expression for which appropriate function should be found. If there 2 functions with the same name and param t
by barahilia 10y ago
As explained in the post, function call is a full expression for which appropriate function should be found. If there 2 functions with the same name and param types it would be impossible to compile such an expression in its own.
- masklinn 10y agoNot necessarily, you'd just need a syntactic mechanism to disambiguate.
- samatman 10y agoAnd have one, since Java either throws away the return value, or assigns it to a variable the type of which is known. Edit: here's the edge case though. You can call a function and use the return value directly as a parameter: foo(bar()). It's possible to have two foo that take both possible bar return types, at which point the compiler is stuck. It could require a cast in this instance, however. The more I think about this the more I wonder why this isn't possible.
- masklinn 10y ago> here's the edge case though. That's no more an edge case than the cases where you throw away the return value or you're binding to an ambiguous type e.g. `A getFoo()`, `B getFoo()`, `Object foo = getFoo()`. > The more I think about this the more I wonder why this isn't possible. The Java spec does not say, for C++ Stroustrup states it's > to keep resolution for an individual operator or function call context-independent. the Java reason is likely also some sort of Principle of Least Surprise claim.