Confused by refusal to expand template
Timon Gehr
timon.gehr at gmx.ch
Fri Mar 23 15:58:21 PDT 2012
On 03/23/2012 11:52 PM, H. S. Teoh wrote:
> Code:
> struct S {
> int f(K)(K x) {
> return 1;
> }
> void func(K)(inout(K) x) {
> auto h = f(x);
> }
> }
> void main() {
> S s;
> s.func("abc"); // This is line 44
> }
>
> This refuses to compile:
>
> test2.d(44): Error: template test2.S.func(K) does not match any function template declaration
> test2.d(44): Error: template test2.S.func(K) cannot deduce template function from argument types !()(string)
>
> Removing 'inout' fixes the problem. But I don't understand why.
>
>
> T
>
You already brought this up IIRC. The IFTI matching algorithm is too
weak. I think it should work.
More information about the Digitalmars-d-learn
mailing list