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