View mode: basic / threaded / horizontal-split · Log in · Help
February 01, 2011
Safer enum casts
If I have an enum of chars, and I have a variable that contains a generic char, I may want to convert the second to an instance of the first one, safely (a normal cast is enough to do it unsafely). Is it a good idea to give this purpose to to!() (this idea is currently not implemented)?


import std.conv: to;
enum Foo : char { a = 'A', b = 'B' }
void main() {
   Foo r1 = cast(Foo)'A'; // OK
   Foo r2 = cast(Foo)'X'; // error undetected
   Foo r3 = to!Foo('A');  // OK
   Foo r4 = to!Foo('X');  // error detected
}

Bye,
bearophile
February 01, 2011
Re: Safer enum casts
bearophile Wrote:

> If I have an enum of chars, and I have a variable that contains a generic char, I may want to convert the second to an instance of the first one, safely (a normal cast is enough to do it unsafely). Is it a good idea to give this purpose to to!() (this idea is currently not implemented)?

I believe this is exactly what std.conv.to should do. It should be the safest and recommended way to do conversions.

I have a request in for preventing removal of qualifiers:
http://d.puremagic.com/issues/show_bug.cgi?id=5307
February 02, 2011
Re: Safer enum casts
Jesse Phillips:

> I believe this is exactly what std.conv.to should do. It should be the safest and recommended way to do conversions.

http://d.puremagic.com/issues/show_bug.cgi?id=5515

Bye,
bearophile
Top | Discussion index | About this forum | D home