On Thursday, 17 September 2020 at 00:32:40 UTC, Cecil Ward

So can the result of declaring certain things with enum ever have an _address_ then? (According to legit D code that is, never mind the underlying implementation details, which may not be observable)

No. Think of it as a named literal.

Given enum x = 10, then int num = x is the same as if you had typed int num = 10.

Thats’s why you have be careful with array enums if you care about allocations.


<rant>I actually really hate the way enum was bent out of shape and twisted from its original purpose so that finally we end up with a way of defining only one value, not the whole range of permissible values for a type as in the beginning.

I wish there were just a keyword ‘constant’ or something (yes, I know, you could just call that something ‘enum’, or ‘const’)</rant>

enum foo is essentially a shortcut for enum { foo }. It’s neither bent out of shape nor twisted. Consider that C++ added the new keyword constexpr for the same thing. Why pollute the namespace with a new keyword when you already have one that fits?

Reply via email to