How to do a checked cast from base-type to enum-type

Chris Nicholson-Sauls ibisbasenji at gmail.com
Sat Apr 5 19:43:07 PDT 2014


On Sunday, 6 April 2014 at 02:21:35 UTC, dnspies wrote:
> Is there a way to do a checked cast from a base type to an 
> enum-type (so that an exception is thrown if it fails)?
>
> ie something like
>
> enum x : dchar { A : 'a', B : 'b', C : 'c' };
>
> x get_x() {
>  dchar r = get_char();
>  return cast(x)r; //Throw exception if this cast fails
> }


enum E : dchar {
     A = 'a',
     B = 'b',
     C = 'c'
}

void main () {
     import std.conv;
     dchar c = 'd';
     E e = to!E( c );
}


std.conv.ConvException@/home/grant/.dvm/compilers/dmd-2.064.2/bin/../src/phobos/std/conv.d(1854): 
Value (d) does not match any member value of enum 'E'



More information about the Digitalmars-d-learn mailing list