On 03/18/12 11:29, Derek wrote: > On Sun, 18 Mar 2012 19:16:02 +1100, Andrej Mitrovic > <andrej.mitrov...@gmail.com> wrote: > >> On 3/18/12, Derek <ddparn...@bigpond.com> wrote: >>> What would be useful is ... >>> bar!(a, b, c); // is equivalent to >>> bar!(int, int, int).bar(a, b, c); >> >> You mean like this? >> >> template bar(T...) >> { >> void bar() { writeln(T); } >> } >> >> void main() >> { >> int a = 1, b = 2, c = 3; >> bar!(a, b, c); >> } > > Almost, but more like this ... > > template add(X,Y,Z) > { > X add(Y a, Z b) > { > return cast(X) (cast(X)a + cast(X)b); > } > } > > void main() > { > double s; > int t; > ulong u; > > s = 1.23; > t = 123; > u = 456; > > t = add!(u,s); > > writefln( "%s %s %s", s,t, u ); > } > > > > This currently errors with ... > > "Error: template instance add!(u,s) add!(u,s) does not match template > declaration add(X,Y,Z)" > why would you do that
what do you want to _do_ it sounds like you're frantically trying to nail templates into a shape that they really really really aren't meant for in any case what is wrong with auto add(T)(T t) { return t[0] + t[1]; }