diff --git a/src/corelib/text/qstringtokenizer.h b/src/corelib/text/qstringtokenizer.h index d14099ffbbe..0b98f0646f1 100644 --- a/src/corelib/text/qstringtokenizer.h +++ b/src/corelib/text/qstringtokenizer.h @@ -292,7 +292,7 @@ class QStringTokenizer using if_haystack_not_pinned = typename if_haystack_not_pinned_impl::type; template ()))> using if_compatible_container = typename std::enable_if< - std::is_same< + std::is_convertible< typename Base::value_type, typename std::iterator_traits::value_type >::value, diff --git a/tests/auto/corelib/text/qstringtokenizer/tst_qstringtokenizer.cpp b/tests/auto/corelib/text/qstringtokenizer/tst_qstringtokenizer.cpp index 1d2658c38f2..e1619fee4d4 100644 --- a/tests/auto/corelib/text/qstringtokenizer/tst_qstringtokenizer.cpp +++ b/tests/auto/corelib/text/qstringtokenizer/tst_qstringtokenizer.cpp @@ -145,6 +145,19 @@ void tst_QStringTokenizer::toContainer() const auto v = tok.toContainer(); QVERIFY((std::is_same_v>)); } + // QLatin1String value_type into QStringList + { + auto tok = qTokenize(QLatin1String{"a,b,c"}, u','); + QStringList result; + tok.toContainer(result); + QCOMPARE(result, QStringList({"a", "b", "c"})); + } + // QLatin1String value_type into QStringList: rvalue overload + { + QStringList result; + qTokenize(QLatin1String{"a,b,c"}, u',').toContainer(result); + QCOMPARE(result, QStringList({"a", "b", "c"})); + } } QTEST_APPLESS_MAIN(tst_QStringTokenizer)