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!