Интересно, каково обоснование того, что std::list<>::splice
делает недействительными итераторы, которые ссылаются на подпоследовательность, вставляемую в новый контейнер. Мне это кажется нелогичным, особенно в свете спецификации стандарта std::container::swap
. В соответствии со стандартом языка std::container::swap
никакие итераторы не аннулируются. Это вполне разумная практическая спецификация. Однако я бы сказал, что std::list<>::splice
также сильно выиграет от сохранения поведения итератора -.
Я понимаю, что могут быть какие-то чисто академические соображения, основанные на понятиях итераторной достижимости и т. д. Но в то же время splice
— этоstd::list
-для конкретной операции, а это означает, что предоставление специальной -специальной спецификации для нее, вероятно, не нанесет серьезного концептуального ущерба дизайну STL в целом.
Так что же это было? Не запретит ли это или чрезмерно усложнит некоторые практические реализации std::list
, которые я не могу распознать?