On Sunday, 14 January 2018 at 02:24:52 UTC, Adam D. Ruppe wrote:
On Sunday, 14 January 2018 at 02:14:50 UTC, Jonathan M Davis wrote:
If you're using template constraints rather than template specializations, then you can't have any unconstrained templates.

Not true: see the tip of the week here http://arsdnet.net/this-week-in-d/2016-sep-04.html

Thanks for that hint (self specialization).

cppcompat.d
```
import std.stdio;

void foo (T) ()
{
   writeln ("(1) ", __PRETTY_FUNCTION__);
}

void foo (T: T) () if (is (T == float))
{
   writeln ("(2) ", __PRETTY_FUNCTION__);
}

void foo (T: T) () if (is (T == double))
{
   writeln ("(3) ", __PRETTY_FUNCTION__);
}

void main ()
{
   foo!int;
   foo!float;
   foo!double;
   foo!real;
   foo!string;
}
```

$ ./cppcomat
(1) void cppcompat.foo!int.foo()
(2) void cppcompat.foo!float.foo()
(3) void cppcompat.foo!double.foo()
(1) void cppcompat.foo!real.foo()
(1) void cppcompat.foo!string.foo()

Reply via email to