grauzone wrote:

void streamOut(T, R)(T object, R range)
{
    foreach(x; a) range.put(x);
    range.put(b);
    range.put(c);
}

So, um... what is a b c and T object?

In my opinion, this is a confusing example. I believe it was meant to be:

void streamOut(T, R)(T object, R range)
{
 foreach(x; object.a) range.put(x);
 range.put(object.b);
 range.put(object.c);
}

So, streamOut is a free function, which it normally would not be. Now, consider 
this:

struct foo {
 int[] a;
 bool b;
 char c;

 void streamOut(R)(R range) {
   foreach(x; a) range.put(x);
   range.put(b);
   range.put(c);
 }
}

I believe this is what you'd normally do.

Do note that I might have misinterpreted it all, as Andrei's code would not do 
what I have outlined above, I only feel it makes the most sense.

--
 Simen

Reply via email to