unordered_map MSVC 失效保证

unordered_map MSVC invalidation guarantee

https://docs.microsoft.com/en-us/cpp/standard-library/unordered-map-class?view=msvc-160 MS 状态:

"inserting an element invalidates no iterators"

但是 Nicolai Josuttis 和 https://en.cppreference.com/w/cpp/container/unordered_map 所著的《C++ 标准库》一书都指出,如果 insert 导致重新散列,insert 可能会使迭代器无效。

MS只是提供了比标准更强的保证吗?如果是这样,是否允许实现做这样的事情?

谢谢, 马克

是的,每个编译器供应商都必须至少遵守标准的保证,但是如果他们愿意,他们可以自由地提供更有力的保证。例如,所有值得一试的编译器都保证 return 值优化 (RVO) 远早于标准强制要求它。