On 3 September 2016 at 21:24, Walter Bright via Digitalmars-d <digitalmars-d@puremagic.com> wrote: > 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); > }
And if either module doesn't have an instance of func?