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 ?

Reply via email to