tst_QStringView: verify that char16_t[] args aren't ambiguous for QS/QSV overloads

They are not.

Pick-to: 6.9 6.8
Task-number: QTBUG-112746
Change-Id: I2a20d68543f5914690acbcb4f214b1d98681de6a
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
This commit is contained in:
Marc Mutz 2024-12-09 11:12:16 +01:00
parent 56faffd92b
commit 67990c16a6

View File

@ -897,6 +897,11 @@ static void test(QString) = delete;
static void test(QStringView) {}
}
extern const QChar qcharArrayOfUnknownSize[];
extern const char16_t char16ArrayOfUnknownSize[];
[[maybe_unused]]
extern const wchar_t wchartArrayOfUnknownSize[];
// Compile-time only test: overload resolution prefers QStringView over QString
void tst_QStringView::overloadResolution()
{
@ -905,6 +910,7 @@ void tst_QStringView::overloadResolution()
QStringViewOverloadResolution::test(qcharArray);
QChar *qcharPointer = qcharArray;
QStringViewOverloadResolution::test(qcharPointer);
QStringViewOverloadResolution::test(qcharArrayOfUnknownSize);
}
{
@ -919,6 +925,7 @@ void tst_QStringView::overloadResolution()
wchar_t wchartArray[42] = {};
QStringViewOverloadResolution::test(wchartArray);
QStringViewOverloadResolution::test(L"test");
QStringViewOverloadResolution::test(wchartArrayOfUnknownSize);
}
#endif
@ -927,6 +934,7 @@ void tst_QStringView::overloadResolution()
QStringViewOverloadResolution::test(char16Array);
char16_t *char16Pointer = char16Array;
QStringViewOverloadResolution::test(char16Pointer);
QStringViewOverloadResolution::test(char16ArrayOfUnknownSize);
}
{
@ -937,6 +945,10 @@ void tst_QStringView::overloadResolution()
}
}
const QChar qcharArrayOfUnknownSize[] = {u'a', u'b', u'c', u'\0', u'd', u'e', u'f'};
const char16_t char16ArrayOfUnknownSize[] = u"abc\0def";
const wchar_t wchartArrayOfUnknownSize[] = L"abc\0def";
void tst_QStringView::std_stringview_conversion()
{
static_assert(std::is_convertible_v<QStringView, std::u16string_view>);