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?