Benjamin Thaut wrote:
The only thing the function cares about is, that it will not change the
data passed to it. It would be kind of nice to have a thrid storage
class "readonly".

Const is really a "readonly" view of data. I think that immutable should be named const, and const should be named readonly, so they won't cause confusion.

If you need a function that don't change data just mark parameters as const. All mutable, const and immutable types are implicitly convertible to const.

It can not be casted back to mutable and it can not be
implicitly shared among threads, but both const and immutable implicitly
convert to readonly, because both of these storage classes lose one of
their properties during conversion. That way you only have to write the
function once and can pass both const and immutable data to it.

Yes, this is how const (as "readonly") works. If you think about readonly, use const. The only drawback are the names.

Reply via email to