On 1/24/13, Philippe Sigaud <philippe.sig...@gmail.com> wrote: > IIRC, you can use __traits(getOverloads, mytype.__ctor) to get all > constructor overloads. > See: > http://dlang.org/traits.html#getOverloads > > I used this in conjunction with __traits(getMember, ...) to get the > entire list of member, overloads included. >
I don't understand why, but it seems DForum doesn't show up any of my posts. I've posted this as my second reply (hope this makes it): If you have multiple constructors you can pick the parameters with a helper template: import std.traits, std.string; struct A { this(int a, double b) { } this(float y) { } } template PickCtorParams(Type, size_t index) { enum ctorLen = __traits(getOverloads, Type, "__ctor").length; static if (index < ctorLen) { alias ParameterTypeTuple!(__traits(getOverloads, A, "__ctor")[index]) PickCtorParams; } else { static assert(0, format("index %s exceeds %s ctors for type %s", index, ctorLen, Type.stringof)); } } void main() { pragma(msg, PickCtorParams!(A, 0)); // (int, double) pragma(msg, PickCtorParams!(A, 1)); // (float) pragma(msg, PickCtorParams!(A, 2)); // out of bounds }