www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - About implicit array cast

reply bearophile <bearophileHUGS lycos.com> writes:
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
Jan 12 2012
parent reply Timon Gehr <timon.gehr gmx.ch> writes:
On 01/13/2012 02:19 AM, bearophile wrote:
 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

This is a bug.
Jan 12 2012
parent bearophile <bearophileHUGS lycos.com> writes:
Timon Gehr:

 This is a bug.

OK: http://d.puremagic.com/issues/show_bug.cgi?id=7285 Bye, bearophile
Jan 12 2012