Manifest constant class instances

Alex sascha.orlov at gmail.com
Sun Nov 4 20:26:13 UTC 2018


On Sunday, 4 November 2018 at 19:28:14 UTC, lngns wrote:
> On Sunday, 4 November 2018 at 19:20:53 UTC, kinke wrote:
>> On Sunday, 4 November 2018 at 19:02:33 UTC, lngns wrote:
>>> I can understand for pointers to struct, as the pointer will 
>>> be invalid at runtime, but, unless I am mistaken, classes are 
>>> not concerned by pointer semantics.
>>
>> A class reference is a pointer too, so using it at runtime 
>> would be invalid too.
>
> Yes but given it works with static constants I would assume the 
> compiler already abstracts away this point. Otherwise there 
> would be a mismatch between what the compiler allocates and 
> what the runtime allocates.
> Am I wrong?

The difference is, that a manifest constant does not possess an 
address, while a static const does, see e.g.,
https://p0nce.github.io/d-idioms/#Precomputed-tables-at-compile-time-through-CTFE

And if you new an instance, then, you get a pointer, which 
collides with the way of working of an enum, which is meant to be 
addressless.


More information about the Digitalmars-d mailing list