On Saturday, 24 March 2012 at 13:59:30 UTC, Philippe Sigaud wrote:
module pack.mod; // needs to be XXX.YYY for __traits to work

void foo() {}
void foo(int x) {}

template Alias(A...) { alias A Alias;}

void main()
{
// The Alias!( ) trick is needed to work around a limitation in
alias X Y grammar
    // __traits() is not accepted in an alias: alias
__traits(getOverloads, X, "Y") OV_XY; does not work
    alias Alias!(__traits(getOverloads, pack.mod, "foo")) OV;

    // OV is a tuple holding all the different foo's

    foreach(i, ov; OV)
        writefln("overload #%s: %s", i, typeof(ov).stringof);

    alias OV[1] intFoo; // void foo(int x) {}

    intFoo(1); // calls void foo(int x) {}
}

That's exactly what I was looking for.  Thanks.

Reply via email to