IFTI Bug

Kirk McDonald kirklin.mcdonald at gmail.com
Sun Jul 9 22:10:44 PDT 2006


Kramer wrote:
> I imagine this should work.  The factorial code is straight from the docs.
> 
> import std.stdio;
> 
> void main()
> {
>     writefln(factorial(2));
> }
> 
> template factorial(int n)
> {
>   static if (n == 1)
>     const factorial = 1;
>   else
>     const factorial = n * factorial!(n-1);
> }
> 
> C:\code\d\src>dmd template_ex_1.d
> template_ex_1.d(8): template template_ex_1.factorial(int n) is not a 
> function template
> template_ex_1.d(5): template template_ex_1.factorial(int n) cannot 
> deduce template function from argument types (int)
> 
> -Kramer

You need to instantiate the template with a bang:

void main() {
     writefln(factorial!(2));
}

IFTI only applies to function templates, which this is not.

-- 
Kirk McDonald
Pyd: Wrapping Python with D
http://dsource.org/projects/pyd/wiki



More information about the Digitalmars-d-bugs mailing list