> Yeah, D feels like that to me too, sometimes. Anyways, for your question - > would using the struct name be good enough? They're easy to get hold of > and usable in switch statements. > > If not, how about this: > > > import std.typetuple; > > struct TypeEnum( T... ) { > static pure nothrow @property > int value( U )( ) { > static assert ( staticIndexOf!( U, T ) != -1 ); > return staticIndexOf!( U, T ); > } > } > > struct A {} > struct B {} > > void main( ) { > alias TypeEnum!(A, B) types; > > assert( types.value!A == 0 ); > assert( types.value!B == 1 ); > }
Ha, yes, that looks quite nice! Thanks! /HF