qt6-bb10/tests/auto/corelib/text
Giuseppe D'Angelo 96d67da420 String-like containers: add implicit conversions towards std:: string views
In C++20 std::basic_string_view has gained a range constructor (like
QStringView always had), but that range constructor has been made
explicit. This means we can't just pass a QString(View) to a function
taking a u16string_view. The consensus seems to be that that types that
should implictly convert towards stdlib's string views should do that
via implicit conversion operators. This patch adds them for

* QByteArrayView => std::string_view
* QString(View) => std::u16string_view
* QUtf8StringView => std::string_view or std::u8string_view, depending
  on the storage_type

QLatin1StringView doesn't have a matching std:: view so I'm not enabling
its conversion.

QByteArray poses a challenge, in that it already defines a conversion
towards const char *. (One can disable that conversion with a macro.)
That conversion makes it impossible to support:

  QByteArray ba;
  std::string_view sv1(ba);  // 1
  std::string_view sv2 = ba; // 2

because:

* if only operator const char *() is defined, then (2) doesn't work
  (situation right now);

* if both conversions to const char * and string_view are defined, then
  (1) is ambiguous on certain compilers (MSVC, QCC). Interestingly
  enough, not on GCC/Clang, but only in C++17 and later modes.

I can't kill the conversion towards const char * (API break, and we use
it *everywhere* in Qt), hence, QByteArray does not get the implicit
conversion, at least not in this patch.

[ChangeLog][QtCore][QByteArrayView] Added an implicit conversion
operator towards std::string_view.

[ChangeLog][QtCore][QString] Added an implicit conversion operator
towards std::u16string_view.

[ChangeLog][QtCore][QStringView] Added an implicit conversion operator
towards std::u16string_view.

[ChangeLog][QtCore][QUtf8StringView] Added an implicit conversion
operator towards std::string_view (QUtf8StringView is using char
as its storage type in Qt 6). Note that QUtf8StringView is planned to
use char8_t in Qt 7, therefore it is expected that the conversion will
change towards std::u8string_view in Qt 7.

Change-Id: I6d3b64d211a386241ae157765cd1b03f531f909a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-13 16:19:06 +02:00
..
qanystringview QAnyStringView: add QDebug stream operator 2023-07-06 02:18:38 +00:00
qbytearray CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qbytearray_large CI: Enable tests under corelib/text for Wasm platform 2023-07-10 14:53:34 +02:00
qbytearrayapisymmetry CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qbytearraylist CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qbytearraymatcher CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qbytearrayview String-like containers: add implicit conversions towards std:: string views 2023-07-13 16:19:06 +02:00
qbytedatabuffer CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qchar CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qcollator CI: Enable tests under corelib/text for Wasm platform 2023-07-10 14:53:34 +02:00
qlatin1stringmatcher CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qlatin1stringview CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qlocale CI: Enable tests under corelib/text for Wasm platform 2023-07-10 14:53:34 +02:00
qregularexpression CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qstring String-like containers: add implicit conversions towards std:: string views 2023-07-13 16:19:06 +02:00
qstring_no_cast_from_bytearray CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qstringapisymmetry CI: Enable tests under corelib/text for Wasm platform 2023-07-10 14:53:34 +02:00
qstringbuilder CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qstringconverter CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qstringiterator CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qstringlist CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qstringmatcher CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qstringtokenizer CI: Enable tests under corelib/text for Wasm platform 2023-07-10 14:53:34 +02:00
qstringview String-like containers: add implicit conversions towards std:: string views 2023-07-13 16:19:06 +02:00
qtextboundaryfinder CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qunicodetools CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
shared Provide optTitle for a NumberDoubleTestData testcase that needs it 2022-10-11 11:21:38 +02:00
CMakeLists.txt tests: Remove remains of qmake conversion from CMakeLists.txt files 2023-02-17 21:56:49 +01:00