При компиляции этого кода выводится неправильный результат:
#include <QtCore/QList>
#include <QtCore/QtAlgorithms>
#include <QtCore/QtDebug>
int main()
{
QList<int> vec;
// vec.end(); // (1)
qDebug() << (vec.end() != qFind(vec, 4));
qDebug() << (qFind(vec, 4) != vec.end());
}
true
false
Если раскомментировать строку (1), сделать контейнер непустым или использовать QVector, выводится правильный результат. При использовании второго варианта qFind(vec.begin(), vec.end,...) программа работает правильно.
Это я что-то делаю неправильно, ошибка в Qt или документированное неопределенное поведение?