--- Comment #4 from 2011-02-17 10:13:58 PST ---
(In reply to comment #3)

> First, this only really happens when the type is numerical.  For example, a
> string array would fail to compile with an integral initializer.  Also, a void
> initializer cannot be mistaken for a dimension size.
> Second, I can see what you are saying, but I don't think this error will 
> affect
> much in practice.  It isn't often that one changes the number of dimensions. 
> Readability-wise, however, it's not obvious whether the last element is an
> initializer (an IDE might make this clearer with syntax coloring).
> Your proposal clearly separates the value from the dimensions, but it probably
> is unacceptable due to parsing requirements.  Plus it looks very bizarre.

It looks somewhat like the fixed-sized initialization syntax.

> If we are doing syntax changes, I think we need something unorthodox if we 
> want
> to make this clear.  What about:
> auto a = new int[][](5, 5; 2);
> auto a = new int[][](5, 5, =2);
> auto a = new int[][](5, 5 : 2);
> auto a = new int[][](5, 5) : 2;

The last line is very close to my suggested syntax, and it has the advantage to
be intuitive for D programmers, because it's a copy of the fixed-sized
initialization syntax:

auto a = new int[][](5, 5) = void;
instead of:
int[5][5] a = void;

> I still think the original syntax I proposed is not different from functions
> that contain default parameters,

Named arguments (as Python ones) are safer than default ones.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to