splice () при аннулировании std :: list и итератора

Форма с тремя аргументамиlist::splice() перемещает один элемент из одного списка в другой.Документация SGI прямо заявляет, что все итераторы,включая тот, который указывает на перемещаемый элемент оставаться в силе.Документация Roguewave ничего не говорит о свойствах аннулирования итераторовsplice() методы, в то время как стандарт C ++ явно заявляет, что он делает недействительными все итераторы и ссылки на склеиваемый элемент.

splicing () на практике работает как определено SGI, но я получаю ошибку подтверждения (разыменование неверного итератора) в отладочных / защищенных версиях SCL реализации STL от Microsoft (что строго следует букве стандарта).

Теперь я использую список именно потому, что хочу переместить элемент между списками, сохраняя при этом действительность итератора, указывающего на него. Стандарт внес крайне бесполезные изменения в первоначальную спецификацию SGI.

Как я могу обойти эту проблему? Или я должен просто быть прагматичным и сунуть голову в песок (потому что сплайсинг делаетне аннулировать итераторы на практике - даже в реализации MS, если отладка итератора отключена).