template type deduction of static 2d arrays

uri via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Oct 24 15:32:57 PDT 2014


Hi All,

I was wondering why in the code below f1() works but f2 template 
version called in the same manner does not. Is there a good 
reason from a language/compiler perspective?

Thanks.
uri


---
auto f1(int[2][2] m)
{
     return m[0][0]*m[1][1]-m[0][1]*m[1][0];
}
auto f2(T)(T[2][2] m)
{
     return m[0][0]*m[1][1]-m[0][1]*m[1][0];
}

void main()
{
     auto res = f1( [[1,2],[3,4]]); // works
     assert(res == -2);

     res = f2([[1,2],[3,4]]); // deos not work
}

Calling f2() as done above gives the following error:

Error: cannot deduce function from argument types !()(int[][]), 
candidates are:
f2(T)(T[2][2] m)


More information about the Digitalmars-d-learn mailing list