A Huge Bummer When Using alias this
Meta via Digitalmars-d
digitalmars-d at puremagic.com
Thu Mar 24 16:02:34 PDT 2016
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?
It has been brought up quite a few times before and if I recall
Andrei wasn't all that concerned. For what reason I'm not sure,
as alias this is supposed to introduce a subtype yet it clearly
isn't because template constraints will fail when they shouldn't.
Basically there's no workaround aside from defining your own
isNumeric and forwarding to std.traits.isNumeric.
More information about the Digitalmars-d
mailing list