ADL

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Sat Sep 3 04:24:01 PDT 2016


On 9/3/2016 3:12 AM, Walter Bright wrote:
> If you are still determined to use it, you can use:
>
>    __traits(compiles, ...)
>
> like you would SFINAE in C++ to select which of the modules from the argument
> types selects a function that compiles.

Eh, I realized it's simpler than that. Based on the code I already presented, 
each argument can be used to generate an import for its corresponding version of 
the function. Then, overloading rules apply and it works. Something like:

Something like:

void foo(T,U)(T t, U u)
{
     alias func = ModuleOf!T.func;
     alias func = ModuleOf!U.func;

     func(t, u);
}


More information about the Digitalmars-d mailing list