const and immutable values, D vs C++?
Ola Fosheim Grøstad
ola.fosheim.grostad at gmail.com
Thu Dec 5 08:01:24 UTC 2019
I haven't used const much in the past because I got burned on
transitive const, so I managed to confuse myself. I am not
really interested in const/immutabel references here, but values.
Seems like there is no reason to ever use const values, except
when they contain a pointer to something non-immutable?
The only difference, as far as I can tell, is if the value type
has pointers to other objects, immutable requires them to be to
immutable objects. Which is a bit odd when you think of it. It
basically means that you cannot put pointers to memory registers
in ROM in a type safe manner... :-/ . That is a very odd
restriction, because that is something you might want to do...
Seems to me that immutable should allow pointers to mutable
memory and that const really shouldn't have been applicable to
values, but only to pointers.
Anyway seems the rule of thumb is to:
- always use immutable on values
- except when the value might contain a pointer to non-immutable
More information about the Digitalmars-d-learn