On Thursday, 11 March 2021 at 13:14:56 UTC, Paul Backus wrote:
On Thursday, 11 March 2021 at 12:56:34 UTC, Виталий Фадеев wrote:
[...]

Something like this:

    template Overloads(alias symbol)
    {
        static if (__traits(compiles, __traits(parent, symbol)))
            alias Overloads = __traits(getOverloads,
                __traits(parent, symbol),
                __traits(identifier, symbol)
            );
        else
            alias Overloads = symbol;
    }

    auto getOverloadFor(alias fun, T)()
    {
        foreach (overload; Overloads!fun)
static if (__traits(compiles, (T arg) { overload(arg); }))
                return &overload;
    }

Usage:

    __processMouseKey = getOverloadFor!(process, MouseKeyEvent);

Thanks a lot, bro!

Reply via email to