Nick Sabalausky wrote:
"Mike Parker" <[email protected]> wrote in message news:[email protected]...
Nick Sabalausky wrote:
"Bill Baxter" <[email protected]> wrote in message news:[email protected]...
On Tue, Dec 8, 2009 at 2:17 PM, hehe45 <[email protected]> wrote:
In c++ it is valid syntax to have trailing commas at the and of enum definitions:
enum {a, b, c, };
This would be a useful addition to D too.

The enum class syntax from c++0x should also adopted by D, this would allow named enums which are >not automatically encased by a namespace:

enum EnumName {A, B, C}; ---> A, B and C are global constants
enum class EnumName {A, B, C};---> A, B and C are in the EnumName namespace

That's basically what it is now:

enum { A,B,C }  --> A,B,C global
The difference though is that doesn't make A, B and C part of a new type.

Which is a very good thing, from my perspective. I cut down the size of the Derelict libraries quite a bit when I converted all the named enums and other constants into anonymous enums, thereby eliminating all the TypeInfo objects. In that particular case, TypeInfo is just useless bloat, IMO.


I would think that could be optimized away. Maybe it would be a linker optimization though.



If i remember right there is some code in phobos that relies on typeinfos to do safe string formatting and integer to identifier conversion for enums.

Still I agree that there should be a way to turn off typeinfo generation for most types (except classes of course, that would screw up dynamic casts).

One way would be to have a switch like --minimal-typeinfo that reduces all TypeInfo instances to a mere int that is an index into a primitives array [byte, short, int, long, ubyte, ushort, uint, ulong, float, double, real, ...] to still enable the routines that relies on typeinfos to work.

That way even if you have a thousands enum's, their combined typeinfo data is 4 bytes long in the executable.

Reply via email to