diff --git a/doc/global/macros.qdocconf b/doc/global/macros.qdocconf index 76de9d9a52e..d8b8bfc464e 100644 --- a/doc/global/macros.qdocconf +++ b/doc/global/macros.qdocconf @@ -147,6 +147,11 @@ macro.youtube.DocBook = "\n" \ "\n" \ "\n" +# +# C++ constrained function templates +# +macro.constraints = "\\section1 Constraints\n\nParticipates in overload resolution only if " + macro.excludefromcreator = "\\meta tag broken" macro.preliminarycmakecommand = "\\note This command is in technology preview and may change in future releases." diff --git a/src/corelib/global/qcompare.cpp b/src/corelib/global/qcompare.cpp index bac725fe6a2..5609ecad896 100644 --- a/src/corelib/global/qcompare.cpp +++ b/src/corelib/global/qcompare.cpp @@ -1287,9 +1287,6 @@ CHECK(strong, equivalent); Implements three-way comparison of integral types. - \note This function participates in overload resolution only if both - \c LeftInt and \c RightInt are built-in integral types. - Returns \c {lhs <=> rhs}, provided \c LeftInt and \c RightInt are built-in integral types. Unlike \c {operator<=>()}, this function template is also available in C++17. See @@ -1315,6 +1312,9 @@ CHECK(strong, equivalent); Returns an instance of \l Qt::strong_ordering that represents the relation between \a lhs and \a rhs. + + \constraints both + \c LeftInt and \c RightInt are built-in integral types. */ /*! @@ -1325,9 +1325,6 @@ CHECK(strong, equivalent); Implements three-way comparison of floating point types. - \note This function participates in overload resolution only if both - \c LeftFloat and \c RightFloat are built-in floating-point types. - Returns \c {lhs <=> rhs}, provided \c LeftFloat and \c RightFloat are built-in floating-point types. Unlike \c {operator<=>()}, this function template is also available in C++17. See @@ -1354,6 +1351,9 @@ CHECK(strong, equivalent); Returns an instance of \l Qt::partial_ordering that represents the relation between \a lhs and \a rhs. If \a lhs or \a rhs is not a number (NaN), \l Qt::partial_ordering::unordered is returned. + + \constraints both + \c LeftFloat and \c RightFloat are built-in floating-point types. */ /*! @@ -1364,16 +1364,16 @@ CHECK(strong, equivalent); Implements three-way comparison of integral and floating point types. - \note This function participates in overload resolution only if \c IntType - is a built-in integral type and \c FloatType is a built-in floating-point - type. - This function converts \a lhs to \c FloatType and calls the overload for floating-point types. Returns an instance of \l Qt::partial_ordering that represents the relation between \a lhs and \a rhs. If \a rhs is not a number (NaN), \l Qt::partial_ordering::unordered is returned. + + \constraints \c IntType + is a built-in integral type and \c FloatType is a built-in floating-point + type. */ /*! @@ -1384,16 +1384,16 @@ CHECK(strong, equivalent); Implements three-way comparison of floating point and integral types. - \note This function participates in overload resolution only if \c FloatType - is a built-in floating-point type and \c IntType is a built-in integral - type. - This function converts \a rhs to \c FloatType and calls the overload for floating-point types. Returns an instance of \l Qt::partial_ordering that represents the relation between \a lhs and \a rhs. If \a lhs is not a number (NaN), \l Qt::partial_ordering::unordered is returned. + + \constraints \c FloatType + is a built-in floating-point type and \c IntType is a built-in integral + type. */ #if QT_DEPRECATED_SINCE(6, 8) @@ -1407,12 +1407,12 @@ CHECK(strong, equivalent); Implements three-way comparison of pointers. - \note This function participates in overload resolution if \c LeftType and - \c RightType are the same type, or base and derived types. It is also used - to compare any pointer to \c {std::nullptr_t}. - Returns an instance of \l Qt::strong_ordering that represents the relation between \a lhs and \a rhs. + + \constraints \c LeftType and + \c RightType are the same type, or base and derived types. It is also used + to compare any pointer to \c {std::nullptr_t}. */ #endif // QT_DEPRECATED_SINCE(6, 8) @@ -1424,14 +1424,13 @@ CHECK(strong, equivalent); Implements three-way comparison of enum types. - \note This function participates in overload resolution only if \c Enum - is an enum type. - This function converts \c Enum to its underlying type and calls the overload for integral types. Returns an instance of \l Qt::strong_ordering that represents the relation between \a lhs and \a rhs. + + \constraints \c Enum is an enum type. */ /*! @@ -1445,11 +1444,10 @@ CHECK(strong, equivalent); \l {https://en.cppreference.com/w/cpp/language/operator_comparison#Pointer_total_order} {strict total order over pointers} when doing the comparison. - \note This function participates in overload resolution if \c T and \c U - are the same type, or base and derived types. - Returns an instance of \l Qt::strong_ordering that represents the relation between \a lhs and \a rhs. + + \constraints \c T and \c U are the same type, or base and derived types. */ /*! @@ -1463,11 +1461,10 @@ CHECK(strong, equivalent); \l {https://en.cppreference.com/w/cpp/language/operator_comparison#Pointer_total_order} {strict total order over pointers} when doing the comparison. - \note This function participates in overload resolution if \c T and \c U - are the same type, or base and derived types. - Returns an instance of \l Qt::strong_ordering that represents the relation between \a lhs and \a rhs. + + \constraints \c T and \c U are the same type, or base and derived types. */ /*! @@ -1481,11 +1478,10 @@ CHECK(strong, equivalent); \l {https://en.cppreference.com/w/cpp/language/operator_comparison#Pointer_total_order} {strict total order over pointers} when doing the comparison. - \note This function participates in overload resolution if \c T and \c U - are the same type, or base and derived types. - Returns an instance of \l Qt::strong_ordering that represents the relation between \a lhs and \a rhs. + + \constraints \c T and \c U are the same type, or base and derived types. */ /*! diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp index 95efa006460..541c7d81fdf 100644 --- a/src/corelib/io/qdebug.cpp +++ b/src/corelib/io/qdebug.cpp @@ -992,8 +992,7 @@ QDebug &QDebug::resetFormat() \since 6.9 Prints the Qt or std ordering value \a t to the \a debug object. - \note This function only participates in overload resolution if \c T - is one of ::_ordering. + \constraints \c T is one of ::_ordering. */ /*! diff --git a/src/corelib/kernel/qjniarray.qdoc b/src/corelib/kernel/qjniarray.qdoc index 2d1c2dd2127..41c4e5e9b8f 100644 --- a/src/corelib/kernel/qjniarray.qdoc +++ b/src/corelib/kernel/qjniarray.qdoc @@ -22,7 +22,7 @@ QJniArray instance that wraps it. //! [forward-iterable-containers] - This function only participates in overload resolution if \c{Container} + \constraints \c{Container} is a container that stores elements of a \l{JNI types}{JNI type} or equivalent C++ type, and provides a forward iterator. @@ -275,7 +275,7 @@ Constructs a QJniArray by copying \a other. Both QJniArray objects will reference the same Java array object. - This constructor only participates in overload resolution if the element + \constraints the element type \c{Other} of \a other is convertible to the element type \c{T} of the QJniArray being constructed. However, no actual conversion takes place. */ @@ -286,7 +286,7 @@ Constructs a QJniArray by moving from \a other. The \a other array becomes \l{QJniArrayBase::isValid}{invalid}. - This constructor only participates in overload resolution if the element + \constraints the element type \c{Other} of \a other is convertible to the element type \c{T} of the QJniArray being constructed. However, no actual conversion takes place. */ @@ -297,7 +297,7 @@ Assigns \a other to this QJniArray, and returns a reference to this. Both QJniArray objects will reference the same Java array object. - This operator only participates in overload resolution if the element + \constraints the element type \c{Other} of \a other is convertible to the element type \c{T} of this QJniArray. However, no actual conversion takes place. */ @@ -308,7 +308,7 @@ Moves \a other into this QJniArray, and returns a reference to this. The \a other array becomes \l{QJniArrayBase::isValid}{invalid}. - This operator only participates in overload resolution if the element + \constraints the element type \c{Other} of \a other is convertible to the element type \c{T} of this QJniArray. However, no actual conversion takes place. */ diff --git a/src/corelib/kernel/qmath.qdoc b/src/corelib/kernel/qmath.qdoc index bc365f26fa6..30dfeb06875 100644 --- a/src/corelib/kernel/qmath.qdoc +++ b/src/corelib/kernel/qmath.qdoc @@ -249,8 +249,7 @@ This function converts the \a degrees in double to radians; the angle is casted to a double before the conversion. - This function participates in overload resolution if and only if - \c Integral is an integral type. + \constraints \c Integral is an integral type. \sa qRadiansToDegrees() */ diff --git a/src/corelib/kernel/qpermissions.cpp b/src/corelib/kernel/qpermissions.cpp index ef22861866e..c5062860ea1 100644 --- a/src/corelib/kernel/qpermissions.cpp +++ b/src/corelib/kernel/qpermissions.cpp @@ -243,8 +243,8 @@ Q_LOGGING_CATEGORY(lcPermissions, "qt.permissions", QtWarningMsg); You do not need to construct this type explicitly, as the type is automatically used when checking or requesting permissions. - This constructor participates in overload resolution only if \c T is one of - the \l{typed permission} classes: + \constraints + \c T is one of the \l{typed permission} classes: \annotatedlist permissions */ @@ -257,8 +257,8 @@ Q_LOGGING_CATEGORY(lcPermissions, "qt.permissions", QtWarningMsg); Use type() for dynamically choosing which typed permission to request. - This function participates in overload resolution only if \c T is one of - the \l{typed permission} classes: + \constraints + \c T is one of the \l{typed permission} classes: \annotatedlist permissions */ diff --git a/src/corelib/kernel/qpointer.qdoc b/src/corelib/kernel/qpointer.qdoc index d95de1150cc..0b570cdef84 100644 --- a/src/corelib/kernel/qpointer.qdoc +++ b/src/corelib/kernel/qpointer.qdoc @@ -125,8 +125,7 @@ Conversion assignment operator. Makes this guarded pointer guard the same object guarded by \a other. - \note This operator participates in overload resolution only if \c{X*} - is convertible to \c{T*}. + \constraints \c{X*} is convertible to \c{T*}. */ /*! @@ -136,8 +135,7 @@ Conversion move-assignment operator. Makes this guarded pointer guard the same object guarded by \a other and resets \a other to nullptr. - \note This operator participates in overload resolution only if \c{X*} - is convertible to \c{T*}. + \constraints \c{X*} is convertible to \c{T*}. */ /*! diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index d1b95be0e63..3cf9058a59d 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -559,12 +559,11 @@ QVariant::QVariant(const QVariant &p) value is is initialized with the arguments \c{std::forward(args)...}. - This overload only participates in overload resolution if \c T can be - constructed from \a args. - This constructor is provided for STL/std::any compatibility. \overload + + \constraints \c T can be constructed from \a args. */ /*! diff --git a/src/corelib/text/qanystringview.cpp b/src/corelib/text/qanystringview.cpp index ad992fbfc39..da72e5f18d4 100644 --- a/src/corelib/text/qanystringview.cpp +++ b/src/corelib/text/qanystringview.cpp @@ -145,8 +145,7 @@ QT_BEGIN_NAMESPACE The behavior is undefined if \a len is negative or, when positive, if \a str is \nullptr. - This constructor only participates in overload resolution if \c Char is a compatible - character type. + \constraints \c Char is a compatible character type. \sa isNull(), {Compatible Character Types} */ @@ -165,8 +164,7 @@ QT_BEGIN_NAMESPACE The behavior is undefined if \a last precedes \a first, or \a first is \nullptr and \a last is not. - This constructor only participates in overload resolution if \c Char - is a compatible character type. + \constraints \c Char is a compatible character type. \sa isNull(), {Compatible Character Types} */ @@ -181,9 +179,8 @@ QT_BEGIN_NAMESPACE Passing \nullptr as \a str is safe and results in a null string view. - This constructor only participates in overload resolution if \a - str is not an array and if \c Char is a compatible character - type. + \constraints \a str is not an array and \c Char is a + compatible character type. \sa isNull(), {Compatible Character Types} */ @@ -199,7 +196,7 @@ QT_BEGIN_NAMESPACE \a string must remain valid for the lifetime of this string view object. - This constructor only participates in overload resolution if \a + \constraints \a string is an actual array and \c Char is a compatible character type. @@ -233,13 +230,13 @@ QT_BEGIN_NAMESPACE \c{std::data(str)} must remain valid for the lifetime of this string view object. - This constructor only participates in overload resolution if \c Container is a - container with a compatible character type as \c{value_type}. - The string view will be empty if and only if \c{std::size(str) == 0}. It is unspecified whether this constructor can result in a null string view (\c{std::data(str)} would have to return \nullptr for this). + \constraints \c Container is a + container with a compatible character type as \c{value_type}. + \sa isNull(), isEmpty() */ diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp index 1fc8797374e..38aefde18d0 100644 --- a/src/corelib/text/qbytearray.cpp +++ b/src/corelib/text/qbytearray.cpp @@ -2210,12 +2210,11 @@ QByteArray& QByteArray::append(char ch) This function will only allocate memory if the number of elements in the range exceeds the capacity of this byte array or this byte array is shared. - \note This function overload only participates in overload resolution if - \c InputIterator meets the requirements of a - \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}. - \note The behavior is undefined if either argument is an iterator into *this or [\a first, \a last) is not a valid range. + + \constraints \c InputIterator meets the requirements of a + \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}. */ QByteArray &QByteArray::assign(QByteArrayView v) diff --git a/src/corelib/text/qbytearrayview.qdoc b/src/corelib/text/qbytearrayview.qdoc index 7d9a455b9fd..108fa0cd59a 100644 --- a/src/corelib/text/qbytearrayview.qdoc +++ b/src/corelib/text/qbytearrayview.qdoc @@ -204,8 +204,7 @@ The behavior is undefined if \a len is negative or, when positive, if \a data is \nullptr. - This constructor only participates in overload resolution if \c Byte is a compatible - byte type. + \constraints \c Byte is a compatible byte type. \sa {Compatible Byte Types} */ @@ -224,8 +223,7 @@ The behavior is undefined if \a last precedes \a first, or \a first is \nullptr and \a last is not. - This constructor only participates in overload resolution if \c Byte is - a compatible byte type. + \constraints \c Byte is a compatible byte type. \sa {Compatible Byte Types} */ @@ -240,8 +238,8 @@ Passing \nullptr as \a data is safe and results in a null byte array view. - This constructor only participates in overload resolution if \a data is not - an array and if \c Byte is a compatible byte type. + \constraints \a data is not an array and \c Byte is a + compatible byte type. \sa {Compatible Byte Types} */ @@ -255,8 +253,7 @@ \a data must remain valid for the lifetime of this byte array view object. - This constructor only participates in overload resolution if \c Byte is a - compatible byte type. + \constraints \c Byte is a compatible byte type. \sa {Compatible Byte Types} */ @@ -304,7 +301,7 @@ The container's data must remain valid for the lifetime of this byte array view object. - This constructor participates in overload resolution if \a c is any contiguous + \constraints \a c is any contiguous container with elements of a compatible byte type. \sa {Compatible Byte Types} diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp index 311418781f8..fe8781bc003 100644 --- a/src/corelib/text/qstring.cpp +++ b/src/corelib/text/qstring.cpp @@ -3376,7 +3376,10 @@ QString &QString::append(QChar ch) resulting string, exceeds the capacity of this string, or if this string is shared. - \note This function overload only participates in overload resolution if + \note The behavior is undefined if either argument is an iterator into *this or + [\a first, \a last) is not a valid range. + + \constraints \c InputIterator meets the requirements of a \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator} and the \c{value_type} of \c InputIterator is one of the following character types: @@ -3391,9 +3394,6 @@ QString &QString::append(QChar ch) \li (on platforms, such as Windows, where it is a 16-bit type) \c wchar_t \li \c char32_t \endlist - - \note The behavior is undefined if either argument is an iterator into *this or - [\a first, \a last) is not a valid range. */ QString &QString::assign(QAnyStringView s) diff --git a/src/corelib/text/qstringview.cpp b/src/corelib/text/qstringview.cpp index 64d4ffc1f1d..7c37c890719 100644 --- a/src/corelib/text/qstringview.cpp +++ b/src/corelib/text/qstringview.cpp @@ -196,7 +196,7 @@ QT_BEGIN_NAMESPACE The behavior is undefined if \a len is negative or, when positive, if \a str is \nullptr. //! [compatible-char-types] - This constructor only participates in overload resolution if \c Char is a compatible + \constraints \c Char is a compatible character type. The compatible character types are: \c QChar, \c ushort, \c char16_t and (on platforms, such as Windows, where it is a 16-bit type) \c wchar_t. //! [compatible-char-types] @@ -265,15 +265,15 @@ QT_BEGIN_NAMESPACE \c{std::data(str)} must remain valid for the lifetime of this string view object. - This constructor only participates in overload resolution if \c Container is a - container with a compatible character type as \c{value_type}. The - compatible character types are: \c QChar, \c ushort, \c char16_t and - (on platforms, such as Windows, where it is a 16-bit type) \c wchar_t. - The string view will be empty if and only if \c{std::size(str) == 0}. It is unspecified whether this constructor can result in a null string view (\c{std::data(str)} would have to return \nullptr for this). + \constraints \c Container is a + container with a compatible character type as \c{value_type}. The + compatible character types are: \c QChar, \c ushort, \c char16_t and + (on platforms, such as Windows, where it is a 16-bit type) \c wchar_t. + \sa isNull(), isEmpty() */ diff --git a/src/corelib/text/qutf8stringview.qdoc b/src/corelib/text/qutf8stringview.qdoc index eba8f72fc15..8bd1c20fc05 100644 --- a/src/corelib/text/qutf8stringview.qdoc +++ b/src/corelib/text/qutf8stringview.qdoc @@ -235,7 +235,7 @@ The behavior is undefined if \a len is negative or, when positive, if \a str is \nullptr. - This constructor only participates in overload resolution if \c Char is a compatible + \constraints \c Char is a compatible character type. The compatible character types are: \c char8_t, \c char, \c{signed char} and \c{unsigned char}. */ @@ -254,7 +254,7 @@ The behavior is undefined if \a last precedes \a first, or \a first is \nullptr and \a last is not. - This constructor only participates in overload resolution if \c Char is a compatible + \constraints \c Char is a compatible character type. The compatible character types are: \c char8_t, \c char, \c{signed char} and \c{unsigned char}. */ @@ -269,7 +269,7 @@ Passing \nullptr as \a str is safe and results in a null string view. - This constructor only participates in overload resolution if \a str + \constraints \a str is not an array and if \c Char is a compatible character type. The compatible character types are: \c char8_t, \c char, \c{signed char} and \c{unsigned char}. @@ -286,7 +286,7 @@ \a string must remain valid for the lifetime of this string view object. - This constructor only participates in overload resolution if \a string + \constraints \a string is an actual array and if \c Char is a compatible character type. The compatible character types are: \c char8_t, \c char, \c{signed char} and \c{unsigned char}. @@ -301,15 +301,15 @@ \c{std::data(str)} must remain valid for the lifetime of this string view object. - This constructor only participates in overload resolution if \c Container is a - container with a compatible character type as \c{value_type}. The - compatible character types are: \c char8_t, \c char, \c{signed char} and - \c{unsigned char}. - The string view will be empty if and only if \c{std::size(str) == 0}. It is unspecified whether this constructor can result in a null string view (\c{std::data(str)} would have to return \nullptr for this). + \constraints \c Container is a + container with a compatible character type as \c{value_type}. The + compatible character types are: \c char8_t, \c char, \c{signed char} and + \c{unsigned char}. + \sa isNull(), isEmpty() */ diff --git a/src/corelib/thread/qfuture.qdoc b/src/corelib/thread/qfuture.qdoc index b278d398821..9faa3d1e49b 100644 --- a/src/corelib/thread/qfuture.qdoc +++ b/src/corelib/thread/qfuture.qdoc @@ -1137,13 +1137,12 @@ results of type \c ContainedType initialized from the values of the \a container. - \note This overload only participates in overload resolution if the - \c Container has input iterators. - \snippet code/src_corelib_thread_qfuture.cpp 32 \dots \snippet code/src_corelib_thread_qfuture.cpp 34 + \constraints the \c Container has input iterators. + \sa QFuture, QtFuture::makeReadyVoidFuture(), QtFuture::makeReadyValueFuture(), QtFuture::makeExceptionalFuture() */ diff --git a/src/corelib/thread/qrunnable.cpp b/src/corelib/thread/qrunnable.cpp index f9d69ed5cbb..a1193007542 100644 --- a/src/corelib/thread/qrunnable.cpp +++ b/src/corelib/thread/qrunnable.cpp @@ -108,11 +108,11 @@ void QRunnable::QGenericRunnable::run() Auto-deletion is enabled by default. - \note This function participates in overload resolution only if \c Callable - is a function or function object which can be called with zero arguments. - \note In Qt versions prior to 6.6, this method took copyable functions only. + \constraints \c Callable + is a function or function object which can be called with zero arguments. + \sa run(), autoDelete() */ diff --git a/src/corelib/thread/qthreadpool.cpp b/src/corelib/thread/qthreadpool.cpp index a975efde607..a0ac3e58759 100644 --- a/src/corelib/thread/qthreadpool.cpp +++ b/src/corelib/thread/qthreadpool.cpp @@ -512,11 +512,11 @@ void QThreadPool::start(QRunnable *runnable, int priority) \a callableToRun is added to a run queue instead. The \a priority argument can be used to control the run queue's order of execution. - \note This function participates in overload resolution only if \c Callable - is a function or function object which can be called with zero arguments. - \note In Qt version prior to 6.6, this function took std::function, and therefore couldn't handle move-only callables. + + \constraints \c Callable + is a function or function object which can be called with zero arguments. */ /*! @@ -558,11 +558,11 @@ bool QThreadPool::tryStart(QRunnable *runnable) does nothing and returns \c false. Otherwise, \a callableToRun is run immediately using one available thread and this function returns \c true. - \note This function participates in overload resolution only if \c Callable - is a function or function object which can be called with zero arguments. - \note In Qt version prior to 6.6, this function took std::function, and therefore couldn't handle move-only callables. + + \constraints \c Callable + is a function or function object which can be called with zero arguments. */ /*! \property QThreadPool::expiryTimeout @@ -820,11 +820,11 @@ void QThreadPool::startOnReservedThread(QRunnable *runnable) Releases a thread previously reserved with reserveThread() and uses it to run \a callableToRun. - \note This function participates in overload resolution only if \c Callable - is a function or function object which can be called with zero arguments. - \note In Qt version prior to 6.6, this function took std::function, and therefore couldn't handle move-only callables. + + \constraints \c Callable + is a function or function object which can be called with zero arguments. */ /*! diff --git a/src/corelib/tools/qlist.qdoc b/src/corelib/tools/qlist.qdoc index 9b540e110c1..b194849203b 100644 --- a/src/corelib/tools/qlist.qdoc +++ b/src/corelib/tools/qlist.qdoc @@ -307,11 +307,11 @@ Constructs a list with the contents in the iterator range [\a first, \a last). - \note This constructor only participates in overload resolution if + The value type of \c InputIterator must be convertible to \c T. + + \constraints \c InputIterator meets the requirements of a \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}. - - The value type of \c InputIterator must be convertible to \c T. */ /*! \fn template QList::~QList() @@ -1618,12 +1618,12 @@ This function will only allocate memory if the number of elements in the range exceeds the capacity of this list or this list is shared. - \note This function overload only participates in overload resolution if - \c InputIterator meets the requirements of a - \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}. - \note The behavior is undefined if either argument is an iterator into *this. + + \constraints + \c InputIterator meets the requirements of a + \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}. */ /*! \fn template QList& QList::assign(std::initializer_list l) diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp index 767b7191a17..ae002b1c141 100644 --- a/src/corelib/tools/qsharedpointer.cpp +++ b/src/corelib/tools/qsharedpointer.cpp @@ -469,8 +469,7 @@ Move-constructs a QSharedPointer instance, making it point at the same object that \a other was pointing to. - This constructor participates in overload resolution only if \c{X*} - implicitly converts to \c{T*}. + \constraints \c{X*} implicitly converts to \c{T*}. \since 5.6 */ @@ -480,8 +479,7 @@ Move-assigns \a other to this QSharedPointer instance. - This assignment operator participates in overload resolution only if \c{X*} - implicitly converts to \c{T*}. + \constraints \c{X*} implicitly converts to \c{T*}. \since 5.6 */ diff --git a/src/corelib/tools/qspan.qdoc b/src/corelib/tools/qspan.qdoc index a2d93cbde68..93f4b83c3a9 100644 --- a/src/corelib/tools/qspan.qdoc +++ b/src/corelib/tools/qspan.qdoc @@ -296,8 +296,7 @@ \c{[first, count)} must be a valid range. - \note This constructor participates in overload resolution only if \c{It} - is \l{span-compatible-iterators}{a compatible iterator}. + \constraints \c{It} is \l{span-compatible-iterators}{a compatible iterator}. */ /*! @@ -308,8 +307,7 @@ \c{[first, last)} must be a valid range. - \note This constructor participates in overload resolution only if \c{It} - is \l{span-compatible-iterators}{a compatible iterator}. + \constraints \c{It} is \l{span-compatible-iterators}{a compatible iterator}. */ /*! @@ -319,14 +317,14 @@ Constructs a QSpan referencing the data in the supplied array \a arr. - \note This constructor participates in overload resolution only if + \note \c{q20::type_identity_t} is a C++17 backport of C++20's + \l{https://en.cppreference.com/w/cpp/types/type_identity}{\c{std::type_identity_t}}. + + \constraints \list \li either \c{N} or \l{extent} are \c{std::dynamic_extent} or otherwise \l{extent} \c{==} \c{N} \li and either \c{S} or \c{const S} are the same as \c{T}. \endlist - - \note \c{q20::type_identity_t} is a C++17 backport of C++20's - \l{https://en.cppreference.com/w/cpp/types/type_identity}{\c{std::type_identity_t}}. */ /*! @@ -334,8 +332,7 @@ Constructs a QSpan referencing the data in the supplied range \a r. - \note This constructor participates in overload resolution only if \c{Range} - is \l{span-compatible-ranges}{a compatible range}. + \constraints \c{Range} is \l{span-compatible-ranges}{a compatible range}. */ /*! @@ -344,7 +341,7 @@ Constructs a QSpan referencing the data in the supplied span \a other. - \note This constructor participates in overload resolution only if + \constraints \list \li either \c{N} or \l{extent} are \c{std::dynamic_extent} or \l{extent} \c{==} \c{N} \li and either \c{S} or \c{const S} are the same as \c{T}. @@ -356,12 +353,12 @@ Constructs a QSpan referencing the data in the supplied initializer list \a il. - \note This constructor participates in overload resolution only if \c{T} is \c{const}-qualified. - \note This constructor is \c{noexcept} only if \c{E} is \c{std::dynamic_extent}. \note If \c{E} is not \c{std::dynamic_extent} and the size of \a il is not \c{E}, the behavior is undefined. + \constraints \c{T} is \c{const}-qualified. + \sa {Const and Mutable Spans} */ @@ -742,11 +739,10 @@ If \c{E} is \c{std::dynamic_extent} then so is \c{E'}. Otherwise, \c{E' = E * sizeof(T)}. - \note This function participates in overload resolution only if - \c{!std::is_const_v}. - \note \c{q20::dynamic_extent} is a C++17 backport of C++20's \l{https://en.cppreference.com/w/cpp/container/span/dynamic_extent}{\c{std::dynamic_extent}}. + \constraints \c{!std::is_const_v}. + \sa as_bytes(), size_bytes(), {Const and Mutable Spans} */ diff --git a/src/corelib/tools/qvarlengtharray.qdoc b/src/corelib/tools/qvarlengtharray.qdoc index 85d957b5bb7..3beb623ac56 100644 --- a/src/corelib/tools/qvarlengtharray.qdoc +++ b/src/corelib/tools/qvarlengtharray.qdoc @@ -105,11 +105,11 @@ Constructs an array with the contents in the iterator range [\a first, \a last). - This constructor only participates in overload resolution if + The value type of \c InputIterator must be convertible to \c T. + + \constraints \c InputIterator meets the requirements of an \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}. - - The value type of \c InputIterator must be convertible to \c T. */ @@ -1040,11 +1040,11 @@ range [\a first, \a last). This function will only allocate memory if the number of elements in the range exceeds the capacity of the container. - This function overload only participates in overload resolution if + The behavior is undefined if either argument is an iterator into *this. + + \constraints \c InputIterator meets the requirements of an \l {https://en.cppreference.com/w/cpp/named_req/InputIterator} {LegacyInputIterator}. - - The behavior is undefined if either argument is an iterator into *this. */ /*! \fn template QVarLengthArray& QVarLengthArray::assign(std::initializer_list list)