const and immutable values, D vs C++?
Ola Fosheim Grøstad
ola.fosheim.grostad at gmail.com
Wed Dec 4 22:51:01 UTC 2019
On Wednesday, 4 December 2019 at 22:43:35 UTC, Bastiaan Veelo
wrote:
> There is a difference I guess if g() returns a reference type
> and is an inout function. immutable y will only work if the
> reference returned is immutable.
But not for values?
> Const is a promise to the rest of the code that you will never
> mutate it. Immutable is a promise by the rest of the code that
> it will never mutate.
But if it isn't marked as "shared" then only the current thread
will modify it, so it is only different if you have a mutable
reference as well that could modify the same object as a const
reference.
> So if g() always returns immutable, it’s best to receive it as
> such, not const. If it can be either, it must be received as
> const.
Is there a way to specify in generic code that you want the best
fit of a const/immutable reference depending on the return type
(but not a mutable one)?
>> I'm comparing D to C++ and I get the following mapping:
>
> Does that make sense at all? D’s const is transitive, C++’s is
> not.
Yes, but it is the same for value types.
More information about the Digitalmars-d-learn
mailing list