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>
bb10
Marc Mutz 2022-02-21 16:08:27 +01:00
parent 9ddc020246
commit 66203133e3
2 changed files with 11 additions and 20 deletions

View File

@ -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

View File

@ -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: