operator==,<=>(std::inplace_vector)
constexpr friend bool operator==( const std::inplace_vector<T, N>& lhs,
const std::inplace_vector<T, N>& rhs );
|
(1) | (seit C++26) |
constexpr friend synth-three-way-result<T>
operator<=>( const std::inplace_vector<T, N>& lhs,
const std::inplace_vector<T, N>& rhs );
|
(2) | (seit C++26) |
Vergleicht den Inhalt zweier std::inplace_vectors.
lhs und rhs gleich ist, d. h. sie haben die gleiche Anzahl von Elementen und jedes Element in lhs vergleicht sich gleich mit dem Element in rhs an derselben Position.lhs und rhs lexikografisch. Der Vergleich wird durchgeführt, als ob std::lexicographical_compare_three_way(lhs.begin(), lhs.end(),
rhs.begin(), rhs.end(), /*synth-three-way*/);
<T>).Tmodelliert three_way_comparable.<ist für Werte des Typs (möglicherweise const-qualifiziert)Tdefiniert und<ist eine totale Ordnungsrelation.
Die <-, <=-, >-, >=- und !=-Operatoren werden aus synthetisiert von operator<=> bzw. operator==.
Parameter
| lhs, rhs | - | std::inplace_vector s, deren Inhalte verglichen werden sollen |
-
T
muss die Anforderungen von
EqualityComparable
erfüllen, um die Überladungen (1) verwenden zu können.
|
||
Rückgabewert
Komplexität
Hinweise
Die relationalen Operatoren sind definiert in Bezug auf synth-three-way , welches operator <=> verwendet, falls möglich, oder andernfalls operator < .
Insbesondere, wenn das Element selbst keinen operator <=> bereitstellt, aber implizit in einen dreiweg-vergleichbaren Typ konvertierbar ist, wird diese Konvertierung anstelle von operator < verwendet.
Beispiel
#include <inplace_vector>
int main()
{
constexpr std::inplace_vector<int, 4>
a{1, 2, 3},
b{1, 2, 3},
c{7, 8, 9, 10};
static_assert
(""
"Compare equal containers:" &&
(a != b) == false &&
(a == b) == true &&
(a < b) == false &&
(a <= b) == true &&
(a > b) == false &&
(a >= b) == true &&
(a <=> b) >= 0 &&
(a <=> b) <= 0 &&
(a <=> b) == 0 &&
"Compare non equal containers:" &&
(a != c) == true &&
(a == c) == false &&
(a < c) == true &&
(a <= c) == true &&
(a > c) == false &&
(a >= c) == false &&
(a <=> c) < 0 &&
(a <=> c) != 0 &&
(a <=> c) <= 0 &&
"");
}