container stuff
Michel Fortin
michel.fortin at michelf.com
Wed May 26 07:37:13 PDT 2010
On 2010-05-25 18:27:32 -0400, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> said:
> There are a bunch of "soft" primitives. Those are meant to put a stop
> to the iterator invalidation problems experienced in the STL. The
> container implementor may alias softXyz to xyz if she knows the
> operation won't mess the ranges currently iterating the container
> (which is the case for most node-based containers). I haven't yet
> discussed subtler cases in which a range starts with a removed element
> etc., but I plan to.
Looks good, but I think something is missing. While I agree with the
idea of having distinguishable "soft" operations, to pass it to other
functions you should be able to make a "soft" shell around your
container and pass that shell mapping non-soft functions to soft ones,
ensuring only soft functions can be called. It could look like this:
insertAtRandomPlace(myContainer.soft, element);
Now you know insertAtRandom won't and *can't* invalidate your
iterators/ranges, and you don't need to write a separate
"softInsertAtRandom" that only calls soft functions.
--
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/
More information about the Digitalmars-d
mailing list