Implementing tail-const in D
Simen Kjærås
simen.kjaras at gmail.com
Wed Jan 24 12:53:04 UTC 2018
On Wednesday, 24 January 2018 at 11:21:59 UTC, Nick Treleaven
wrote:
> On Tuesday, 23 January 2018 at 09:36:03 UTC, Simen Kjærås wrote:
>> Unqual is the standard way today to get a head-mutable version
>> of something. For dynamic arrays, static arrays, pointers and
>> value types, including structs without aliasing, thi works.
>> For AAs, classes, and structs with aliasing, Unqual is the
>> wrong tool, but it's the tool we have, so it's what we use.
>
> I made an old PR for a Rebindable that works with
> const/immutable structs with aliasing:
> https://github.com/dlang/phobos/pull/4363
Nice. I guess HeadMutable should use Rebindable in those cases,
if you get this merged. It addresses a somewhat orthogonal issue
though. We need to be able to call mutating methods on the
resulting value, e.g. popFront(), without mutating aliased
values. For that to work, the type must be able to specify how to
make a head-mutable version of itself. Rebindable cannot offer
this kind of access (and shouldn't).
--
Simen
More information about the Digitalmars-d
mailing list