diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2021-04-15 14:31:46 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2021-04-16 16:49:28 +0200 |
commit | b322bfcc14845a4b6a6eef85ef359b1e4591a5ca (patch) | |
tree | 9677e4b399f7706fa9f334fb555fe8732b55b862 /src/corelib/text/qstring.h | |
parent | 8546e017c01311b2625d03ef7ca3dfdd491eb88b (diff) |
QString: add missing char8_t* constructor / fromUtf8 overloads
Currently we support:
QString s = QString::fromUtf(u8"foo", 3);
But we don't support
QString s = QString::fromUtf8(u8"foo");
QString s(u8"foo");
There's no reason not to have these two functions. Guess what,
we've actually got code _in Qt_ that tries to build a QString out of
a char8_t; that code stops compiling under C++20 (which is supported,
but not CI-tested at the moment, it seems).
Re-add the missing constructor and fromUtf8 overloads.
[ChangeLog][QtCore][QString] Added a constructor and a fromUtf8()
overload taking a `const char8_t *` argument.
Task-number: QTQAINFRA-4117
Task-number: QTQAINFRA-4242
Change-Id: I1f0ae658b3490b9e092941cabcc7fb8fc4c51aa3
Pick-to: 6.1.0 6.1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/text/qstring.h')
-rw-r--r-- | src/corelib/text/qstring.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/corelib/text/qstring.h b/src/corelib/text/qstring.h index c6d97c9d51..5e215625c6 100644 --- a/src/corelib/text/qstring.h +++ b/src/corelib/text/qstring.h @@ -386,6 +386,12 @@ public: QString(QChar c); QString(qsizetype size, QChar c); inline QString(QLatin1String latin1); +#if defined(__cpp_char8_t) || defined(Q_CLANG_QDOC) + Q_WEAK_OVERLOAD + inline QString(const char8_t *str) + : QString(fromUtf8(str)) + {} +#endif inline QString(const QString &) noexcept; inline ~QString(); QString &operator=(QChar c); @@ -747,6 +753,9 @@ public: } #if defined(__cpp_char8_t) || defined(Q_CLANG_QDOC) Q_WEAK_OVERLOAD + static inline QString fromUtf8(const char8_t *str) + { return fromUtf8(reinterpret_cast<const char *>(str)); } + Q_WEAK_OVERLOAD static inline QString fromUtf8(const char8_t *str, qsizetype size) { return fromUtf8(reinterpret_cast<const char *>(str), size); } #endif |