Thanks for advice ;) This looks like some `standard trick` that is yet not learnt or forgoten by me personally. The key was in using `parent` trait. This is what I failed to think of. This is working as expected:
//-----
import std;
import core.thread;
import std.meta: AliasSeq;

void foo(string param1) {}
void foo(string param1, int param2, bool param3) {}

template Bar(alias Func)
{
alias Bar = __traits(getOverloads, __traits(parent, Func), __traits(identifier, Func));
}

void main()
{
        import std.traits: fullyQualifiedName, Parameters;
    import std.conv: text;
    static foreach( It; Bar!foo ) {
pragma(msg, fullyQualifiedName!It ~ "/" ~ (Parameters!It).length.text);
    }
}
//-----
Output:
onlineapp.foo/1
onlineapp.foo/3
//-----

So as far as I understand alias template parameter gives access to all of items of overload set as I was expecting. The only problem is that I didn't found something about it in specification about templates:
https://dlang.org/spec/template.html

Reply via email to