Jonathan Marler:

if we allow return value types to be written as "auto" then it makes since to have cast(auto) as well.

I think "cast(auto)" as I understand in your proposal introduces too often undefined situations, because in many cases the compiler can't know what's the type to cast to, and guessing is not acceptable. So I think it's not a good idea.

But sometimes I have code like this:

void main() {
    int x;
    byte y;
    // ...
    y = cast(typeof(y))x;
}


Here I want to cast x to the type of y to allow the assignment to y. This is perhaps an acceptable semantics for "cast(auto)":


void main() {
    int x;
    byte y;
    // ...
    y = cast(auto)x; // OK
}


In that case the inference for the casting type is easy because the type of y is already defined. More examples:


void foo(byte z) {}
void main() {
    int x;
    // ...
    auto y = cast(auto)x; // Error
    byte y = cast(auto)x; // OK, but not very useful
    foo(cast(auto)x);     // OK
}

Bye,
bearophile

Reply via email to