non-integral enums?

Tom Tom_member at pathlink.com
Fri Feb 24 17:10:26 PST 2006


In article <t194d3-6dn.ln1 at birke.kuehne.cn>, Thomas Kuehne says...
>
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>Is there any reason why enum-base-types are restricted to integers?
>
>How about lifting the integer restriction and updating the documentaion:
>
>http://digitalmars.com/d/enum.html (DMD-0.147)
>>  If an Expression is supplied for an enum member, the value of the
>>  member is set to the result of the Expression. The Expression must be
>>  resolvable at compile time. Subsequent enum members with no
>>  Expression are set to the value of the previous member plus one
>
>new version:
>>  If an Expression is supplied for an enum member, the value of the
>>  member is set to the result of the Expression. The Expression must be
>>  resolvable at compile time. If EnumBaseType is a numerical type, 
>>  subsequent enum members with no Expression are set to the value of
>>  the previous member plus one.
>
>
>http://digitalmars.com/d/enum.html (DMD-0.147)
>>  Named enum members can be implicitly cast to integral types, but
>>  integral types cannot be implicitly cast to an enum type.
>
>new version:
>>  Named enum members can be implicitly cast to their EnumBaseType, but
>>  the EnumBaseType cannot be implicitly cast to an enum type.
>
>Consequences:
>
>1) no changes for existing code
>
>2) enables float enums
>
># enum SpeedLimit : double
># {
>#	SLOW = 6.1,
>#	FAST = 9.3
># }
>
>3) enables struct enums
>
># struct S
># {
># 	int i;
># 	float f;
># }
>#
># enum E : S
># {
># 	A = { i:1, f:2.2},
># 	B = { i:1, f:3.2},
># 	C = { i:0, f:3.2}
># }

Don't you forget string enums. That would also be NICE!

Tom;



More information about the Digitalmars-d mailing list