On 03/26/12 00:58, bls wrote: > Thanks Artur, > > On 03/25/2012 03:18 PM, Artur Skawina wrote: >> On 03/25/12 22:45, bls wrote: >>> How do I "call" opDispatch(string name, E...)(E elements) ? >>> What I want to archive is to call f.i. fm.list with an arbitrary number of >>> arguments without using >>> >>> fm.list(1, "abc", 4L, 3.33); >>> >>> Instead I would prefer >>> fm.list = (1, "abc", 4L, 3.33); >>> >>> Is this somehow possible ? >> >> Well, you can do >> >> template ID(A...) { alias A ID; } >> >> fm.list = ID!(1, "abc", 4L, 3.33); >> >> but is that any better than your first version above?... > Not sure... > > Maybe if we rename it > fm.list = Values!(1,2,true); > > But I does not work.. Seems I am not able to figure out the opDispatch > signature.
import std.stdio; template Values(A...) { alias A Values; } struct FlexMap { template opDispatch(string key) { auto opDispatch(VS...)(VS vs) { foreach (v; vs) writefln("%s: (%s)%s;", key, typeof(v).stringof, v); } } } void main() { auto fm = FlexMap(); fm.list = Values!(1, "abc", 4L, 3.33); } artur