- iterator[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp20[meta cpp]
namespace std {
template <class Iterator1, three_way_comparable_with<Iterator1> Iterator2>
constexpr compare_three_way_result_t<Iterator1, Iterator2>
operator<=>(const reverse_iterator<Iterator1>& x,
const reverse_iterator<Iterator2>& y); // (1) C++20
}
reverse_iterator
オブジェクトの三方比較を行う。
return y.base() <=> x.base();
- base()[link base.md]
- 逆順イテレータであるため、return文の引数順が逆になっている
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
std::vector<int> v = {1, 2, 3};
std::reverse_iterator<decltype(v)::iterator> it1(v.end());
std::reverse_iterator<decltype(v)::iterator> it2(v.end());
if ((it1 <=> it2) == 0) {
std::cout << "equal" << std::endl;
}
else {
std::cout << "not equal" << std::endl;
}
}
- it1 <=> it2[color ff0000]
equal
- C++20
- Clang:
- GCC: 10 [mark verified]
- Visual C++: ??