On 09/19/13 17:22, Joseph Rushton Wakeling wrote: > On 19/09/13 16:55, Artur Skawina wrote: >> I'm not sure i understand your problem, but you could use structs. ie: >> >> struct VertexProperties { >> size_t color; >> string name; >> } >> >> You can get the field names and types at CT and work with that. > > Yes, that's a good suggestion. I guess I was thinking that it'd be easier to > do something like > > auto g = Graph!(Tuple!(double, "weight"), Tuple!(size_t, "colour", > string, "name")); > > ... than to force the user to define a struct up front and pass it as > template parameter.
Yeah, support for anonymous structs as template parms would be useful; auto g = Graph!(struct { double weight; size_t color; string name }); But that's not currently possible. You can do something like: auto g = Graph!q{ double weight; size_t color; string name; }; then, inside the Graph template: // template Graph(string F, ...) { struct S { mixin (F); } // ...look at fields of 'S'... (This will work if you only need builtin types and/or custom ones already available in the Graph template) artur