While I work on making std.allocator better, here's some food for thought regarding std.collection.

Consider a traditional container with reference semantics, Java-style. Regarding changing the collection (e.g. adding/removing elements) while iterating, we have the following possibilities:

1. Leave it undefined, like the STL does. Probably this is too extreme.

2. Throw an exception if a remove is attempted while ranges exist. This works but it's conservative - e.g. it throws even if those ranges are never to be used again etc.

3. Allow the removal but throw from the ranges if there's any attempt to use a range following a remove.

4. Make it work such that ranges continue to be valid post removal. Perhaps this is on the inefficient side.


Andrei

Reply via email to