summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-02-21 16:08:27 +0100
committerMarc Mutz <marc.mutz@qt.io>2022-02-22 12:20:15 +0000
commit66203133e3d68f91a63a8257d736596dceab4e01 (patch)
treecce46fd494632c551df8bdc969de420e6377664e /src
parent9ddc02024644e0c6801f71b0f9844918de288a7b (diff)
QStringConverter: make explicit what should never have been implicit
As a drive-by, remove the GCC 7 constexpr work-around. [ChangeLog][Potentially Source-Incompatible Changes] All QStringEncoder/Decoder constructors are now explicit. Change-Id: I0972e2736115993d44a48e73dbf4b08a1c94bef2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/text/qstringconverter.h25
-rw-r--r--src/corelib/text/qstringconverter_base.h6
2 files changed, 11 insertions, 20 deletions
diff --git a/src/corelib/text/qstringconverter.h b/src/corelib/text/qstringconverter.h
index 4d2138f143..dcc2b4a433 100644
--- a/src/corelib/text/qstringconverter.h
+++ b/src/corelib/text/qstringconverter.h
@@ -55,27 +55,20 @@
QT_BEGIN_NAMESPACE
-// work around a compiler bug in GCC 7
-#if (defined(Q_CC_GNU) && __GNUC__ == 7) || defined(Q_QDOC)
-#define QSTRINGCONVERTER_CONSTEXPR
-#else
-#define QSTRINGCONVERTER_CONSTEXPR constexpr
-#endif
-
class QStringEncoder : public QStringConverter
{
protected:
- QSTRINGCONVERTER_CONSTEXPR QStringEncoder(const Interface *i)
+ constexpr explicit QStringEncoder(const Interface *i)
: QStringConverter(i)
{}
public:
- QSTRINGCONVERTER_CONSTEXPR QStringEncoder()
+ constexpr QStringEncoder()
: QStringConverter()
{}
- QSTRINGCONVERTER_CONSTEXPR QStringEncoder(Encoding encoding, Flags flags = Flag::Default)
+ constexpr explicit QStringEncoder(Encoding encoding, Flags flags = Flag::Default)
: QStringConverter(encoding, flags)
{}
- QStringEncoder(const char *name, Flags flags = Flag::Default)
+ explicit QStringEncoder(const char *name, Flags flags = Flag::Default)
: QStringConverter(name, flags)
{}
@@ -123,17 +116,17 @@ private:
class QStringDecoder : public QStringConverter
{
protected:
- QSTRINGCONVERTER_CONSTEXPR QStringDecoder(const Interface *i)
+ constexpr explicit QStringDecoder(const Interface *i)
: QStringConverter(i)
{}
public:
- QSTRINGCONVERTER_CONSTEXPR QStringDecoder(Encoding encoding, Flags flags = Flag::Default)
+ constexpr explicit QStringDecoder(Encoding encoding, Flags flags = Flag::Default)
: QStringConverter(encoding, flags)
{}
- QSTRINGCONVERTER_CONSTEXPR QStringDecoder()
+ constexpr QStringDecoder()
: QStringConverter()
{}
- QStringDecoder(const char *name, Flags f = Flag::Default)
+ explicit QStringDecoder(const char *name, Flags f = Flag::Default)
: QStringConverter(name, f)
{}
@@ -231,6 +224,4 @@ QByteArray &operator+=(QByteArray &a, const QStringEncoder::DecodedData<T> &b)
QT_END_NAMESPACE
-#undef QSTRINGCONVERTER_CONSTEXPR
-
#endif
diff --git a/src/corelib/text/qstringconverter_base.h b/src/corelib/text/qstringconverter_base.h
index dd84cf8744..23a011d297 100644
--- a/src/corelib/text/qstringconverter_base.h
+++ b/src/corelib/text/qstringconverter_base.h
@@ -158,13 +158,13 @@ protected:
constexpr QStringConverter()
: iface(nullptr)
{}
- constexpr QStringConverter(Encoding encoding, Flags f)
+ constexpr explicit QStringConverter(Encoding encoding, Flags f)
: iface(&encodingInterfaces[int(encoding)]), state(f)
{}
- constexpr QStringConverter(const Interface *i)
+ constexpr explicit QStringConverter(const Interface *i)
: iface(i)
{}
- Q_CORE_EXPORT QStringConverter(const char *name, Flags f);
+ Q_CORE_EXPORT explicit QStringConverter(const char *name, Flags f);
public: