On 5/16/16 5:38 PM, Alex wrote:
On Monday, 16 May 2016 at 21:15:16 UTC, Steven Schveighoffer wrote:
On 5/16/16 4:39 PM, Alex wrote:
     // something that does not worked as expected:
     // how to rewrite a for loop
     for(auto i = 0; i < b.length; i++) writeln(&b[i]);
     // into a foreach loop?


What you need is a range that produces void * instead element itself.

This would probably work:

struct VoidRange
{
   void[] arr;
   auto front() { return arr.ptr; }
   void popFront() { arr.popFront; }
   bool empty() { return arr.empty; }
}

foreach(p; VoidRange(b)) writeln(p);

-Steve

Yes... I could do this... but then, I would construct millions of
structs to hold just ordinal numbers... Using a iota would also be a
possibility... but I want something even less perceptible...

Hey, there's nothing wrong with for-loops. Just trying to answer the question :)

You could also do something like:

foreach(i; 0 .. b.length) writeln(&b[i]);

-Steve

Reply via email to