operator==,<=> (std::inplace_vector)
|
constexpr
friend
bool
operator
==
(
const
std::
inplace_vector
<
T, N
>
&
lhs,
const std:: inplace_vector < T, N > & rhs ) ; |
(1) | (начиная с C++26) |
|
constexpr
friend
synth
-
three
-
way
-
result
<
T
>
operator
<=>
(
const
std::
inplace_vector
<
T, N
>
&
lhs,
|
(2) | (начиная с C++26) |
Сравнивает содержимое двух std::inplace_vector ов.
std:: lexicographical_compare_three_way ( lhs. begin ( ) , lhs. end ( ) ,
rhs. begin ( ) , rhs. end ( ) , synth - three - way ) ; .
-
Tмоделируетthree_way_comparable. -
<определен для значений типа (возможно, const-квалифицированного)T, и<является отношением полного порядка.
Операторы
<
,
<=
,
>
,
>=
и
!=
синтезируются
соответственно
из
operator
<=>
и
operator
==
.
Содержание |
Параметры
| lhs, rhs | - | std::inplace_vector s, содержимое которых нужно сравнить |
-
T
должен удовлетворять требованиям
EqualityComparable
для использования перегрузок (1).
|
||
Возвращаемое значение
Сложность
Примечания
Операторы отношения определяются с использованием synth-three-way , который использует operator <=> если возможно, или operator < в противном случае.
Важно отметить, что если элемент сам по себе не предоставляет operator <=> , но неявно преобразуется в тип с трёхсторонним сравнением, это преобразование будет использовано вместо operator < .
Пример
#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 ("" "Сравнение равных контейнеров:" && (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 && "Сравнение неравных контейнеров:" && (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 && ""); }