Здравствуйте, All!
Столкнулся со следующей проблемой. Есть структура, у нее есть
bool operator<(const STRUC& c)const;
Есть вектора вида
std::vector<STRUC> vec;
сортируем их с помощью std::sort таким образом:
std::sort(vec.begin(), vec.end());
При компиляции (MS VC++ 6.0 SP5) выдается следующая ошибка:
C:\Microsoft Visual Studio\VC98\INCLUDE\algorithm(561) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'E:\8966\vc98\p2\src\P2\main.c', line 494)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Error executing cl.exe.
1) Замена std::sort на версию с предикатом не помогает.
2) Реально в коде таких векторов три (все от этой структуры, все члены разных классов). С одним вектором такой код проходит, с другими двумя нет.
3) Под debug все компилится.
4) Если сменить уровень оптимизации на любой другой кроме "maximize speed", то все работает (т.е. компилится).
5) Если сменить sort на stable_sort — все тоже работает.
Конкретно в этом случае для меня нет приницпиальной разницы между sort и stable_sort, поэтом проблему обошел. Но что делать когда это невозможно (например, sort делается в коде, который я не имею права править)?
С уважением,
zmaks100