#include struct SmallType { char a[8]; }; struct BigType { char a[9]; }; void foo() { QList bigT; // Warning QList smallT; // OK } class A { public: void foo() { m_big.clear(); } QList m_big; // OK }; void foo1(QList big2) { QList bigt; // OK bigt = big2; } QList foo2() { QList bigt; // OK return bigt; } static QList s_big; extern void takesBig(QList); void foo3() { QList bigt; // OK s_big = bigt; s_big = QList(); // OK QList bigt2; // OK takesBig(bigt2); } extern QList returnsBig(); void foo4() { QList b; // Warning for (auto a : b) {} QList b2 = returnsBig(); // OK QList b3 = { BigType() }; // Warning QList b4 = b2; // Ok } struct A1 { QList a(); }; struct B1 { A1 b(); }; void foo5() { QList b5 = B1().b().a(); } void test_bug358740() { QList list; // OK int a, b; }