shorter foreach syntax - C++0x range-based for

Nick Treleaven nospam at example.net
Mon Nov 1 06:16:47 PDT 2010


There's a C++0x proposal for a range-based 'for' statement:
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html

The upcoming GCC 4.6 C++ compiler changes list support for this:
http://gcc.gnu.org/gcc-4.6/changes.html

I think the syntax could be useful for D to shorten and improve on the 
status quo a little. Here's the C++ example:

int array[5] = { 1, 2, 3, 4, 5 };
for (int& x : array)
  x *= 2;

Currently D has:

int array[5] = [1, 2, 3, 4, 5];
foreach (ref x; array)
  x *= 2;

I think this is better:

for (ref x : array)
  x *= 2;

Apart from being 4 chars shorter, I think it looks more natural using the 
':' instead of ';'. A lesser benefit is it allows reuse of the 'for' 
keyword, making the 'foreach' keyword unnecessary.

Maybe this would be acceptable for D?


More information about the Digitalmars-d mailing list