Array literals MUST be immutable.

Steven Schveighoffer schveiguy at yahoo.com
Wed Feb 17 15:38:55 PST 2010


Michel Fortin Wrote:

> On 2010-02-17 04:17:09 -0500, Walter Bright <newshound1 at digitalmars.com> said:
> 
> > Don wrote:
> >> This is for me the last remaining D2 issue.
> > 
> > That would make it difficult to do things like:
> > 
> >    int*[] foo(int *p)
> >    {
> >      return [p, p + 1];
> >    }
> > 
> > as all the elements of the literal would also have to be immutable. I 
> > think you've made a good case, but there is also this issue.
> 
> One thing I like to do with array literals is use them for appending 
> several elements at once:
> 
> 	array ~= [1, a+1, b+1];
> 
> This way I avoid multiple array appends so it should be faster, but if 
> that temporary array literal gets allocated on the heap then it's 
> rather counterproductive for me to use array literals for this.
> 
> Could cases like this, where the array never escape, be allocated on the stack?

Doesn't this do exactly that now?

array ~= 1 ~ (a+1) ~ (b+1);

-Steve



More information about the Digitalmars-d mailing list