On Thursday, 11 March 2021 at 12:48:13 UTC, Paul Backus wrote:
On Thursday, 11 March 2021 at 12:26:07 UTC, Виталий Фадеев
wrote:
Have:
void process( ref MouseKeyEvent event )
{
...
}
void process( ref MouseMoveEvent event )
{
...
}
Want:
_processMouseKey = &process; // <-- not works
_processMouseMove = &process; // <-- not works
What is correct way to get address of function with specific
argument ?
You can use __traits(getOverloads, process) plus some
metaprogramming to get the address of a specific overload. But
IMO the easiest way is to use lambdas:
__processMouseKey = (ref MouseKeyEvent event) {
process(event); };
__processMouseMove = (ref MouseMoveEvent event) {
process(event); };
This will generate lambda:
__processMouseKey = (ref MouseKeyEvent event) { process(event);
};
two calls:
call labnda;
call process;
What right way to call function directly with selecting one of
two ?