Is there something special required to use Appender.clear
Steven Schveighoffer
schveiguy at gmail.com
Thu Jan 24 18:28:02 UTC 2019
On 1/24/19 7:35 AM, FeepingCreature wrote:
> On Tuesday, 27 March 2018 at 12:31:05 UTC, Simen Kjærås wrote:
>> On Tuesday, 27 March 2018 at 12:17:58 UTC, Ellie Harper wrote:
>>> Sorry if this is a stupid question, but is there something special
>>> required to call Appender.clear? When I attempt even just a simple
>>> use I am getting compile errors relating to `template object.clear`.
>>
>> From the documentation for Appender:
>>
>>> Note
>>> clear is disabled for immutable or const element types, due to the
>>> possibility that Appender might overwrite immutable data.
>>
>> Since string is immutable(char)[], clear() is simply not available for
>> appender!string.
>>
>
> Isn't this wrong, though? Appender controls the memory it references. It
> could just choose to allocate non-immutable memory internally. As long
> as any const data put into the appender is *returned* as const, there is
> no chance of immutable memory being overwritten.
Appender is sometimes given a starting array. clear isn't callable in
that case, and we don't distinguish the difference in the type or at
runtime.
I did a lot of work on std.array.Appender when I redid the array runtime
to fix array appending back in 2010 to make it safe. e.g.:
https://github.com/schveiguy/phobos/commit/7e89201cdae96e71e550afe72b59ef3db145916f
Disabling clear from appender for non-mutable element types was one of
the changes:
https://github.com/schveiguy/phobos/commit/6636569318d26545bf7c36ddac029830a6d52531
This is before we were on github, so I don't know if there's any
discussion of the issues, perhaps on the mailing list, but looking at my
emails around that time, there are some emails that aren't in the
mailing list.
A funny thing I wrote to Walter/Sean around that time, when I was just
getting druntime commit access:
"I don't mind helping out in druntime, but I'm not really any kind of
expert on the runtime, and I doubt I'll make many contributions besides
this one without assignment."
;)
FYI, this thread is almost a year old.
-Steve
More information about the Digitalmars-d-learn
mailing list