enum somestrs : string { ... } enum d = 0.0; template EnumBaseType(E) if (is(E==enum)) { ... } unittest { static assert( is(EnumBaseType!somestrs == string) ); static assert( is(EnumBaseType!d : float) ); static assert(!is(EnumBaseType!d == float) ); }
A template like this would make at least my life easier.