20-Sep-2013 19:20, Andrei Alexandrescu пишет:
On 9/19/13 1:02 PM, Andrej Mitrovic wrote:
On 9/19/13, Andrei Alexandrescu <[email protected]> wrote:
I'm not sure I understand how that would work.

-----
module test;
[snip]

Thanks, that's the simplest and most effective. I reduced it to:

struct A
{
     enum hasState = false;
     private mixin template funDef()
     {
         void fun(int x) { writeln(x); }
     }
     static if (hasState)
         mixin funDef!();
     else
         static mixin funDef!();
}

void main()
{
     A a;
     a.fun(42);
}

I see no way to extract the scaffolding into a library.

Shouldn't it as simple as a mixin-able template that simply forwards all methods of a type T (and if it has no state it does so statically).
With __traits(allMembers,...) to extract all publics, it must be doable.

The end result should be around the following...

struct A{
        //aliases type or contains state as required
        mixin extractState!T;
}



--
Dmitry Olshansky

Reply via email to