Hi, The container-assign epic is partially merged. What's left is QString::assign(), and there only the assign(it, it) part. If we release as-is (with step 1, cf. below), there's a gap in the QString::assign() overload set vis-a-vis all other container classes (Qt or STL).
The QString::assign() overload set is constructed in four steps: - 1: non-(it,it) overloads (approved before the FF, but still doing its rounds on the CI for actual merging) - 2: (it, it) for QChar, QLatin1Char, char16_t (on Gerrit for review) - 3: ditto for char32_t (ditto, on Gerrit) - 4: ditto for (signed,unsigned) char, char8_t (not on Gerrit, yet) Each step adds value: Step 1 gives QString at least a contiguous-range overload. Step 2 makes QString pass tst_containerapisymmetry tests for assign(). Step 3 enables assign() functionality for UCS4-encoded data and Step 4 for UTF-8 encoded data that's not contiguous. The fourth step ran into a cyclic dependency issue with QStringDecoder, which depends on QString, and we need it vice versa. Given that non-contiguous UTF-8 data should be pretty rare, I'd be fine with cutting off after Step 3 for Qt 6.6 and adding Step 4 after the necessary refactorings (if any) for 6.7. I wouldn't like to stop after Step 2, because in that state the assign(it,it) function has an implied post-condition of result.size() == std::distance(first, last), which users should not come to rely on (Hyrum's Law), and Step 3 breaks that. Chain ends in https://codereview.qt-project.org/c/qt/qtbase/+/481544. Epic: https://bugreports.qt.io/browse/QTBUG-106165 Thanks, Marc -- Marc Mutz <marc.m...@qt.io> Principal Software Engineer The Qt Company Erich-Thilo-Str. 10 12489 Berlin, Germany www.qt.io Geschäftsführer: Mika Pälsi, Juha Varelius, Jouni Lintunen Sitz der Gesellschaft: Berlin, Registergericht: Amtsgericht Charlottenburg, HRB 144331 B -- Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development