About implicit array cast

bearophile bearophileHUGS at lycos.com
Thu Jan 12 17:19:01 PST 2012


This code compiles, because the [0,0] dynamic array literal casts implicitly to int[2]:


int[2] foo() {
    return [0, 0]; // OK
}
void main() {}


And of course this too compiles:


int[2] bar() {
    int[2] ab;
    return (true) ? ab : ab; // OK
}
void main() {}



But currently this code doesn't compile:


int[2] spam() {
    int[2] ab;
    return (true) ? ab : [0, 0]; // Error
}
void main() {}


test.d(3): Error: cannot implicitly convert expression (cast(int[])ab) of type int[] to int[2u]


Is this good?

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list