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?
