Why does this template constraint not work?

Ross Hays accounts at rosshays.net
Fri Dec 27 18:31:56 PST 2013


On Saturday, 28 December 2013 at 02:27:00 UTC, Ross Hays wrote:
> import std.stdio;
>
> void test(T)()
> 	if (is (T : float))
> {
> 	writeln(typeid(T));
> }
>
> void main()
> {
> 	test!int;
> }
>
> When I run this I am getting the output "int"
> My understanding of template constraints is that the call to 
> test!int will not find a match since the function test only 
> accepts float as a template parameter. I just ran into this 
> problem while trying to understand something unrelated.

Okay figured it out actually. If you are not going to allow 
implicit conversion the appropriate constraint is...

if (is (T == float))

I said it last time I asked about is and I will say it again. It 
is such a weird syntax...


More information about the Digitalmars-d-learn mailing list