VS2010: утверждать «несовместимые векторные итераторы» в std :: vector.clear ()

Я использую следующий глупый код:

std::vector<wxString> m_redoSteps;
...
m_redoSteps.clear();

Когда я компилирую с Visual Studio 6 или GCC, m_redoSteps.clear () работает нормально, когда я использую Visual Studio 2010, появляется утверждение «несовместимые векторные итераторы» (что приводит к сбою в сборке релиза).

Есть идеи, что здесь не так?

Изменить: добавление еще одной строки кода:

std::vector<wxString> m_redoSteps;
...
if (!m_redoSteps.empty())
{
// do something in case it is not empty - which isn't in my case
...
}
m_redoSteps.clear(); // first call leads to the assertion...

-1

Решение

Установите Visual Studio 2010 SP1, см. Этот отчет об ошибке: http://connect.microsoft.com/VisualStudio/feedback/details/545013

Обновление (14 апреля 2015 г.):

Описание ошибки 545013: ограничение vector :: erase возвращает несовместимый итератор в отладочной сборке.

Оригинальная ссылка http://connect.microsoft.com/VisualStudio/feedback/details/545013 недоступен, однако кеш оригинальной ошибки здесь http://web.archive.org/web/20140727031651/http://connect.microsoft.com/VisualStudio/feedback/details/545013

Ошибка была устранена в Visual Studio SP 1, как описано здесь Описание пакета обновления 1 для Visual Studio 2010

3

Другие решения

Других решений пока нет …