please help me submit a bug!
jfondren
julian.fondren at gmail.com
Sat Oct 9 06:06:33 UTC 2021
On Saturday, 9 October 2021 at 05:46:50 UTC, jfondren wrote:
> I don't quite get it, but it looks like your `enum T A` is
> treated like a manifest constant
https://dlang.org/spec/enum.html#manifest_constants
Note, the spec doesn't have the "copy and paste" language that
people use to describe the pitfall with enum array literals. I
think that behavior's purely implied by enums not referring to
runtime locations:
>Manifest constants are not lvalues, meaning their address cannot
>be taken. They exist only in the memory of the compiler.
>Better, the manifest constant has no runtime location in the
>executable.
With the `const T A` version, `A.b` refers to a specific location
in the process's memory. With the `enum T A` version, `A.b` since
it's in a runtime context must build the struct on the spot, and
since the struct is mutable (unlike a string's bytes) it must be
freshly constructed on each occurrence.
More information about the Digitalmars-d
mailing list