digitalmars.D.learn - Use enum base type?
- Janissary (11/11) Apr 17 2013 Is it possible to evaluate an enum's base type? Ideally something
- Simen Kjaeraas (12/22) Apr 17 2013 Whenever you want to do weird stuff with types, std.traits[1] should
- Janissary (2/27) Apr 17 2013 Thanks, that's just what I needed.
Is it possible to evaluate an enum's base type? Ideally something like: 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.
Apr 17 2013
On 2013-04-17, 19:15, Janissary wrote:Is it possible to evaluate an enum's base type? Ideally something like: 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.Whenever you want to do weird stuff with types, std.traits[1] should what you want: enum E : int { a } typedef E F; typedef const F G; static assert(is(OriginalType!G == const int)); [1]: http://dlang.org/phobos/std_traits -- Simen
Apr 17 2013
On Wednesday, 17 April 2013 at 18:56:43 UTC, Simen Kjaeraas wrote:On 2013-04-17, 19:15, Janissary wrote:Thanks, that's just what I needed.Is it possible to evaluate an enum's base type? Ideally something like: 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.Whenever you want to do weird stuff with types, std.traits[1] should std.traits.OriginalType[2] does what you want: enum E : int { a } typedef E F; typedef const F G; static assert(is(OriginalType!G == const int)); [1]: http://dlang.org/phobos/std_traits
Apr 17 2013