Почему std::prev(), примененный к итератору QSet<int*>, дает мне ошибку сегмента?
У меня Debian 11 amd64, Qt 5.15.2, и я пытаюсь использоватьstd::prev(it.end())
чтобы получить последний элемент вQSet
, так:
#include <QSet>
int main() {
return *(int*)(*(std::prev(QSet<int*>({new int(10)}).end())));
}
Но когда я запускаю это, у меня возникает ошибка.
Если я изменюсьstd::prev()
to , все работает отлично — я получаю код возврата 10, как и ожидалось (последний элемент созданного мной набора —int*
до 10). Ноoperator--
устарел в Qt 5.15.
Вероятно, это хорошо работает на разных версиях Qt, но моя цель — заставить работать именно эту версию Qt.
Кто-нибудь знает, что я делаю неправильно?
PS При необходимости вы можете просмотреть готовый к использованию фрагмент демо-кода по адресу https://github.com/makise-homura/qt-crash-test .