splice () em std :: list e invalidação de iterador

A forma de 3 argumentos delist::splice() move um único elemento de uma lista para outra.Documentação da SGI afirma explicitamente que todos os iteradores,incluindo o que aponta para o elemento que está sendo movido permanecer válido.Documentação da Roguewave não diz nada sobre propriedades de invalidação do iterador desplice() métodos, enquanto o padrão C ++ declara explicitamente que invalida todos os iteradores e referências ao elemento que está sendo unido.

splicing () na prática funciona como definido pela SGI, mas eu recebo falha de asserção (desreferenciando o iterador inválido) nas versões de SCL de depuração / segura da implementação de STL da microsoft (que segue estritamente a letra do padrão).

Agora, eu estou usando lista exatamente porque eu quero mover um elemento entre as listas, preservando a validade do iterador apontando para ele. O padrão fez uma mudança extremamente inútil na especificação do SGI original.

Como posso contornar esse problema? Ou eu deveria ser apenas pragmático e enfiar a cabeça na areia (porque a emenda faznão invalidar iteradores na prática - nem mesmo na implementação do MS, uma vez que a depuração do iterador é desativada).