www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Array initialisation vs assignment

reply "ed" <growlercab gmail.com> writes:
Hi All,

I would expect both blocks of code below to behave in the same 
manner but they don't.

---
void main()
{
     int[] a = [1,2,3,4];
     int[2][2] b = a; // fine, does an array copy
}
---
void main()
{
     int[] a=[1,2,3,4];
     int[2][2] b;
     b = a; // compile time error
}
---

Is it a bug or by design?
(and if by design why?)

Cheers,
ed
Mar 14 2014
parent reply "bearophile" <bearophileHUGS lycos.com> writes:
ed:

 void main()
 {
     int[] a = [1,2,3,4];
     int[2][2] b = a; // fine, does an array copy
 }
 Is it a bug or by design?
That looks like a compiler bug. You are supposed to use a cast to do an assignment like that. Bye, bearophile
Mar 14 2014
parent "ed" <growlercab gmail.com> writes:
On Friday, 14 March 2014 at 23:10:57 UTC, bearophile wrote:
 ed:

 void main()
 {
    int[] a = [1,2,3,4];
    int[2][2] b = a; // fine, does an array copy
 }
 Is it a bug or by design?
That looks like a compiler bug. You are supposed to use a cast to do an assignment like that. Bye, bearophile
OK, thanks I'll file it.
Mar 14 2014