On 9/3/16 1:24 PM, Walter Bright 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);
}
This only works with the respective modules do define `func`. We need
something that conditionally plants the symbol depending on whether the
module defines it or not. -- Andrei