Based on latest DMD 2.061
Here is what I have reduced it to so far:
---
struct A(T, int N)
{
}
struct B(T, int N, int M)
{
alias B!(T, N, 1) C;
}
alias B!(int, 2, 2) b_t;
void foo(T, int N)(in A!(T,N), in B!(T,N,1))
{
}
void main()
{
A!(int,2) a;
B!(int,2,1) b;
foo(a, b);
}
---
.\ifti.d(21): Error: template ifti.foo does not match any function template declaration
.\ifti.d(21): Error: template ifti.foo(T,int N) cannot deduce template function
from argument types !()(A!(int,2),B!(int,2,1))
---
Note: removing either alias will cause compile to succeed.
Comment #1 by k.hara.pg — 2013-04-08T21:05:32Z
By fixing bug 9143, this issue is also fixed in 2.061 release.