On Mon, 19 Apr 2010 16:52:40 -0400, Philippe Sigaud <philippe.sig...@gmail.com> wrote:

On Mon, Apr 19, 2010 at 21:20, Steven Schveighoffer <schvei...@yahoo.com>wrote:


Here is a quick-and-dirty solution, if you don't mind using
classes/interfaces.

(snip)

I'm not used to using interfaces in this way. What become the stored T
values when you cast the classes into IW to construct your array? I suppose
they're lost?

Not sure what you mean...


Does that mean that if we have a bunch of T (all different types),you map a
call to makeW on it, get back a bunch of WByVal!T (all different types),
cast them to IW and... what? erase the types?

What I had in mind was:

struct S
{
  int foo(int x) { return x * 2; }
}

struct S2
{
  int foo(int x) { return x + 2; }
}

void main()
{
   S s1;
   S2 s2;

   IW[] ws;

   ws ~= makeW(s1);
   ws ~= makeW(s2);

   assert(ws[0].foo(3) == 6);
   assert(ws[1].foo(3) == 5);
}

does this help?

-Steve

Reply via email to