non-integral enums?

Thomas Kuehne thomas-dloop at kuehne.cn
Fri Feb 24 12:08:17 PST 2006


-----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}
# }

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFD/3UA3w+/yD4P9tIRAvbrAKCRJVzOd8tgfu3yUJqoy7spILy9XgCfbq/q
9pwmXsSd/EhVdNJsoNN1tOc=
=LEQd
-----END PGP SIGNATURE-----



More information about the Digitalmars-d mailing list