On 11/15/2012 07:09 PM, Sönke Ludwig wrote:
Am 14.11.2012 20:07, schrieb Timon Gehr:
On 11/14/2012 06:30 PM, Rob T wrote:
On Wednesday, 14 November 2012 at 09:16:13 UTC, Walter Bright wrote:
I'm not requesting this to be a feature of D, I'm only asking why it
is not
being done.

Because types are resolved bottom-up, and if the return type were part
of the overloading, there would be no sensible rule to determine the
types.

But doesn't the compiler already have to perform overload-like decision
making on return types in the "alias this" case, esp once multiple
conversions are allowed?

class A{
    int i;
    bool b;
    alias i this;
    alias b this;
}

main()
{
    auto a = new A;
    int i = a;
    bool b = a;
}

--rt

alias this is not the best example, but the necessary logic is basically 
already in the compiler.
Lambda parameter type deduction based on the expected type is a similar task.

It is not being done because it is not being done. Full type inference would be 
even more fun.

In the lambda case it's return type deduction and not overload resolution. 
Those are actually two
very different things.


Yes, lambda _return_ type deduction is less related, but I have never claimed otherwise.

Another case that shows how a compiler must be able to take into account the left hand side of an assignment in order to type check the right hand side:

int foo(int);
double foo(int);

void main(){
    double function(int) fun = &foo;
}

Reply via email to