On Wed, 16 Nov 2011 21:00:16 +0100, Steven Schveighoffer <schvei...@yahoo.com> wrote:

On Wed, 16 Nov 2011 14:26:57 -0500, Timon Gehr <timon.g...@gmx.ch> wrote:

On 11/16/2011 02:22 PM, Steven Schveighoffer wrote:
On Tue, 15 Nov 2011 13:45:02 -0500, Timon Gehr <timon.g...@gmx.ch> wrote:

Note that this is an explicit allocation:

int[] a = [1,2,3]; // just as explicit as a NewExpression

Only the enums "hide" it sometimes, but actually you should know the
involved types.

As I've said, there are already ways to explicitly allocate memory. A
suggested replacement for this is:

int[] a = array(1, 2, 3);

And you could always do:

int[] a = [1, 2, 3].dup;

Nobody complains about having to do:

char[] a = "hello".dup;

I don't see why we couldn't do the same for all array literals.


Because 'immutable' behaves nicely on built-in value types, but not on arbitrary reference types.

string is a reference type. We hear no complaints about strings being stored in ROM and the type of literals being immutable.

immutable(int[][]) a = [[1]];
int[][] b = a.dup; // Fails.

The problem is with more than a single layer of indirection.

Reply via email to