#include #include #include #include void receivingList(QList); void receivingMap(QMultiMap); using namespace std; QList getQtList() { return {}; // dummy, not important } const QList getConstQtList() { return {}; // dummy, not important } const QList & getConstRefQtList() { static QList foo; return foo; } void testQtContainer() { QList qt_container; receivingList(qt_container); for (int i : qAsConst(qt_container)) { // Warning } const QList const_qt_container; for (int i : const_qt_container) { // OK } for (int i : getQtList()) { // Warning } for (int i : qAsConst(qt_container)) { } // Warning for (const int &i : qAsConst(qt_container)) { } // Warning for (int &i : qt_container) { } // OK for (int i : getConstQtList()) { // OK } for (int i : getConstRefQtList()) { // OK } vector stl_container; for (int i : stl_container) { // OK } } class A { public: void foo() { for (int a : m_stlVec) {} // OK } std::vector m_stlVec; }; void testQMultiMapDetach() { QMultiMap m; receivingMap(m); for (int i : qAsConst(m)) { } } void testBug367485() { QList list; for (auto a : list) {} // OK QList list2; receivingList(list2); for (auto a : qAsConst(list2)) {} // Warning QList list3; for (auto a : list3) {} // OK receivingList(list3); QList list4; foreach (auto a, list4) {} // OK receivingList(list4); } struct SomeStruct { QStringList m_list; void test_add_qasconst_fixits() { for (const auto &s : qAsConst(m_list)) {} // Warn } QStringList getList(); }; void test_add_qasconst_fixits() { SomeStruct f; for (const auto &s : qAsConst(f.m_list)) {} // Warn SomeStruct *f2; for (const auto &s : qAsConst(f2->m_list)) {} // Warn QStringList locallist = f.getList(); for (const auto &s : qAsConst(locallist)) {} // Warn for (const auto &s : getQtList()) {} // Warn for (const auto &s : f.getList()) {} // Warn }