Issue with template constraints in numeric types
data pulverizer via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Aug 3 05:24:02 PDT 2017
Dear all,
I am writing template constraints for different numeric types:
```
import std.stdio: writeln;
import std.traits: isIntegral, isNumeric;
T test(T)(T x, T y)
if(is(T: double) && isNumeric!T)
{
return x*y;
}
auto test(T)(T x, T y)
if(!is(T: double) && isNumeric!T)
{
return 5*test!double(x, y);
}
void main()
{
int x = 2;
double y = 2.0;
writeln("int test: ", test(x, x));
writeln("double test: ", test(y, y));
}
```
returns:
```
int test: 4
double test: 4
```
The same issue occurs when I try using template specializations
instead. Explanations and suggestions please.
Thank you!
Compiler details:
$ dmd --version
DMD64 D Compiler v2.074.1
Copyright (c) 1999-2017 by Digital Mars written by Walter Bright
More information about the Digitalmars-d-learn
mailing list