On Monday, 31 August 2015 at 07:55:53 UTC, drug wrote:
Hello
I need to get the type to which I can cast the enum for using with foreign library. For example:
```
enum Foo { A = "a", B = "b", }
enum Bar { A = 123, B = 432, }

static assert(is(BaseEnumType!Foo == string));
static assert(is(BaseEnumType!Bar == int));

I guess there is simple answer somewhere but I failed to find it yet.

In std.traits there is the required isX funcitons.

import std.stdio;
import std.traits;
void main(){
        static if(isSomeString!Foo){
                writefln("String: %s", Foo.A);
        }
        static if(isScalarType!Bar){
                writefln("Integer: %s", Bar.A);
        }
        static if(isSomeString!Bar){
                writefln("String: %s", Foo.A); // wont print
        }
        static if(isScalarType!Foo){
                writefln("Integer: %s", Bar.A); // wont print
        }
}

enum Foo { A="a", B = "b" }
enum Bar { A=1, B=2 }

Reply via email to