On Monday, 28 September 2020 at 10:01:23 UTC, ikod wrote:
Is it specific to some types? What if collection supports stable "foreach"?

Yes it depends on how collection members (such as insert, find, replace, erase, etc) are implemented.

I presume we need attributes on mutating collection members that describes if the operation invalidates ranges or not.

It is relatively simple to implement checks for range invalidation at run-time. This is basically Rust-style borrow checking at run-time instead of compile-time.

In C++ this is called "iterator invalidation". This attributes are not formally defined in code but part of the documentation.

Reply via email to