@@ -20,16 +20,13 @@ namespace cpp {
20
20
template <typename T> struct iterator_traits ;
21
21
template <typename T> struct iterator_traits <T *> {
22
22
using reference = T &;
23
- using value_type = T;
24
23
};
25
24
26
25
template <typename Iter> class reverse_iterator {
27
26
Iter current;
28
27
29
28
public:
30
29
using reference = typename iterator_traits<Iter>::reference;
31
- using value_type = typename iterator_traits<Iter>::value_type;
32
- using iterator_type = Iter;
33
30
34
31
LIBC_INLINE reverse_iterator () : current() {}
35
32
LIBC_INLINE constexpr explicit reverse_iterator (Iter it) : current(it) {}
@@ -41,38 +38,6 @@ template <typename Iter> class reverse_iterator {
41
38
LIBC_INLINE constexpr explicit reverse_iterator (const Other &it)
42
39
: current(it) {}
43
40
44
- LIBC_INLINE friend constexpr bool operator ==(const reverse_iterator &lhs,
45
- const reverse_iterator &rhs) {
46
- return lhs.base () == rhs.base ();
47
- }
48
-
49
- LIBC_INLINE friend constexpr bool operator !=(const reverse_iterator &lhs,
50
- const reverse_iterator &rhs) {
51
- return lhs.base () != rhs.base ();
52
- }
53
-
54
- LIBC_INLINE friend constexpr bool operator <(const reverse_iterator &lhs,
55
- const reverse_iterator &rhs) {
56
- return lhs.base () > rhs.base ();
57
- }
58
-
59
- LIBC_INLINE friend constexpr bool operator <=(const reverse_iterator &lhs,
60
- const reverse_iterator &rhs) {
61
- return lhs.base () >= rhs.base ();
62
- }
63
-
64
- LIBC_INLINE friend constexpr bool operator >(const reverse_iterator &lhs,
65
- const reverse_iterator &rhs) {
66
- return lhs.base () < rhs.base ();
67
- }
68
-
69
- LIBC_INLINE friend constexpr bool operator >=(const reverse_iterator &lhs,
70
- const reverse_iterator &rhs) {
71
- return lhs.base () <= rhs.base ();
72
- }
73
-
74
- LIBC_INLINE constexpr iterator_type base () const { current; }
75
-
76
41
LIBC_INLINE constexpr reference operator *() const {
77
42
Iter tmp = current;
78
43
return *--tmp;
0 commit comments