Confused by refusal to expand template
David
d at dav1d.de
Fri Mar 23 15:58:58 PDT 2012
Am 23.03.2012 23:52, schrieb H. S. Teoh:
> 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
>
I've never really used inout, but don't you need it also for the
return-type? Furthermore you don't the the inout here, since this
template does match const/immutable/nothing anyways.
More information about the Digitalmars-d-learn
mailing list