Issue with template constraints in numeric types

data pulverizer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Aug 3 05:35:08 PDT 2017


On Thursday, 3 August 2017 at 12:31:00 UTC, Adam D. Ruppe wrote:
> On Thursday, 3 August 2017 at 12:24:02 UTC, data pulverizer 
> wrote:
>> import std.traits: isIntegral, isNumeric;
>
> Are you familiar with isFloatingPoint?
>
> http://dpldocs.info/experimental-docs/std.traits.isFloatingPoint.html
>
>> if(is(T: double) && isNumeric!T)
>
> Keep in mind that T:double here means "if T can implicitly 
> convert to double". Since int can implicitly convert to double 
> too, this case covers both families!
>
> You might want to try == instead of : for a more exact match.

Thank you very much!

What about this case:

```
T test(T: double)(T x, T y)
{
	return x*y;
}

auto test(T)(T x, T y)
{
	return 5*test!double(x, y);
}
```

which also gives:

```
int test: 4
double test: 4
```




More information about the Digitalmars-d-learn mailing list