On Thursday, 24 March 2016 at 21:26:00 UTC, Jack Stouffer wrote:
alias this is only useful when not using any function that relies on the template constraints in std.traits.

For example

import std.traits;

void someFunc(N)(N val) if (isNumeric!N)
{
    int b = val;
}

void main()
{
    import std.typecons;
    Nullable!int a = 42;

    someFunc(a);
}

$ dmd test.d
test.d(13): Error: template someFunc cannot deduce function from argument types !()(Nullable!(int))

Removing the template constraint makes it compile and run just fine. What's a good work around for these types of issues?

`isNumeric(T)` explicitly allows only built-in types (int, float, etc.) and prevents user-defined types. Use `if (is(NumericTypeOf!T N))` if you want to allow types `T` that can convert to some numeric type `N`.


Reply via email to