diff --git a/src/corelib/tools/qversionnumber.cpp b/src/corelib/tools/qversionnumber.cpp index 84bce0cfd41..4b8ace71cc9 100644 --- a/src/corelib/tools/qversionnumber.cpp +++ b/src/corelib/tools/qversionnumber.cpp @@ -81,10 +81,13 @@ QT_IMPL_METATYPE_EXTERN(QVersionNumber) */ /*! - \fn template QVersionNumber::QVersionNumber(const QVarLengthArray &seg) - \since 6.4 + \fn QVersionNumber::QVersionNumber(QSpan args) + \since 6.8 - Constructs a version number from the list of numbers contained in \a seg. + Constructs a version number from the span specified by \a args. + + \note In Qt versions prior to 6.8, QVersionNumber could only be constructed + from QList, QVarLenthArray or std::initializer_list. */ /*! diff --git a/src/corelib/tools/qversionnumber.h b/src/corelib/tools/qversionnumber.h index 80cf7428c90..95217a6effa 100644 --- a/src/corelib/tools/qversionnumber.h +++ b/src/corelib/tools/qversionnumber.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #if !defined(QT_LEAN_HEADERS) || QT_LEAN_HEADERS < 2 @@ -113,7 +114,7 @@ class QVersionNumber Q_CORE_EXPORT void setListData(QList &&seg); - explicit SegmentStorage(std::initializer_list args) + explicit SegmentStorage(QSpan args) : SegmentStorage(args.begin(), args.end()) {} explicit SegmentStorage(const int *first, const int *last) @@ -256,19 +257,20 @@ public: inline QVersionNumber() noexcept : m_segments() {} + Q_WEAK_OVERLOAD inline explicit QVersionNumber(const QList &seg) : m_segments(seg) { } // compiler-generated copy/move ctor/assignment operators and the destructor are ok + Q_WEAK_OVERLOAD explicit QVersionNumber(QList &&seg) : m_segments(std::move(seg)) { } inline QVersionNumber(std::initializer_list args) - : m_segments(args) + : m_segments(QSpan{args}) {} - template - explicit QVersionNumber(const QVarLengthArray &sec) - : m_segments(sec.begin(), sec.end()) + explicit QVersionNumber(QSpan args) + : m_segments(args) {} inline explicit QVersionNumber(int maj)