Skip to content

Commit eab3cbb

Browse files
committed
fix some comments
1 parent 5f12c9c commit eab3cbb

File tree

2 files changed

+34
-27
lines changed

2 files changed

+34
-27
lines changed

libcxx/include/__flat_set/flat_set.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
#include <__iterator/next.h>
3939
#include <__iterator/ranges_iterator_traits.h>
4040
#include <__iterator/reverse_iterator.h>
41+
#include <__iterator/prev.h>
4142
#include <__memory/allocator_traits.h>
4243
#include <__memory/uses_allocator.h>
4344
#include <__memory/uses_allocator_construction.h>
@@ -359,9 +360,9 @@ class flat_set {
359360
template <class... _Args>
360361
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> emplace(_Args&&... __args) {
361362
if constexpr (sizeof...(__args) == 1 && (is_same_v<remove_cvref_t<_Args>, _Key> && ...)) {
362-
return __try_emplace(std::forward<_Args>(__args)...);
363+
return __emplace(std::forward<_Args>(__args)...);
363364
} else {
364-
return __try_emplace(_Key(std::forward<_Args>(__args)...));
365+
return __emplace(_Key(std::forward<_Args>(__args)...));
365366
}
366367
}
367368

@@ -688,7 +689,7 @@ class flat_set {
688689
}
689690

690691
template <class _Kp>
691-
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> __try_emplace(_Kp&& __key) {
692+
_LIBCPP_HIDE_FROM_ABI pair<iterator, bool> __emplace(_Kp&& __key) {
692693
auto __it = lower_bound(__key);
693694
if (__it == end() || __compare_(__key, *__it)) {
694695
return pair<iterator, bool>(__emplace_exact_pos(__it, std::forward<_Kp>(__key)), true);
@@ -699,7 +700,7 @@ class flat_set {
699700

700701
template <class _Kp>
701702
_LIBCPP_HIDE_FROM_ABI bool __is_hint_correct(const_iterator __hint, _Kp&& __key) {
702-
if (__hint != cbegin() && !__compare_(*(__hint - 1), __key)) {
703+
if (__hint != cbegin() && !__compare_(*std::prev(__hint), __key)) {
703704
return false;
704705
}
705706
if (__hint != cend() && __compare_(*__hint, __key)) {
@@ -714,11 +715,11 @@ class flat_set {
714715
if (__hint == cend() || __compare_(__key, *__hint)) {
715716
return __emplace_exact_pos(__hint, std::forward<_Kp>(__key));
716717
} else {
717-
// key equals
718+
// we already have an equal key
718719
return __hint;
719720
}
720721
} else {
721-
return __try_emplace(std::forward<_Kp>(__key)).first;
722+
return __emplace(std::forward<_Kp>(__key)).first;
722723
}
723724
}
724725

libcxx/include/__flat_set/ra_iterator.h

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <__iterator/iterator_traits.h>
1717
#include <__type_traits/is_constructible.h>
1818
#include <__utility/move.h>
19+
#include <iterator>
1920

2021
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
2122
# pragma GCC system_header
@@ -31,7 +32,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD
3132
/**
3233
* __ra_iterator is a random access iterator that wraps an underlying iterator.
3334
* It also stores the underlying container type in its type so that algorithms
34-
* can optimize based on the underlying container type.
35+
* can optimize based on the underlying container type, and to avoid inadvertently
36+
* mixing iterators coming from different containers..
3537
*/
3638
template <class _Container, class _Iterator>
3739
struct __ra_iterator {
@@ -40,6 +42,8 @@ struct __ra_iterator {
4042

4143
friend _Container;
4244

45+
static_assert(std::random_access_iterator<_Iterator>, "Underlying iterator must be a random access iterator");
46+
4347
public:
4448
using iterator_concept = random_access_iterator_tag; // deliberately lower contiguous_iterator
4549
using iterator_category = random_access_iterator_tag;
@@ -50,92 +54,94 @@ struct __ra_iterator {
5054
requires is_default_constructible_v<_Iterator>
5155
= default;
5256

53-
_LIBCPP_HIDE_FROM_ABI explicit __ra_iterator(_Iterator __iter) : __iter_(std::move(__iter)) {}
57+
_LIBCPP_HIDE_FROM_ABI explicit constexpr __ra_iterator(_Iterator __iter) : __iter_(std::move(__iter)) {}
5458

55-
_LIBCPP_HIDE_FROM_ABI _Iterator __base() const noexcept(noexcept(_Iterator(__iter_))) { return __iter_; }
59+
_LIBCPP_HIDE_FROM_ABI constexpr _Iterator __base() const noexcept(noexcept(_Iterator(__iter_))) { return __iter_; }
5660

57-
_LIBCPP_HIDE_FROM_ABI decltype(auto) operator*() const { return *__iter_; }
58-
_LIBCPP_HIDE_FROM_ABI decltype(auto) operator->() const
61+
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator*() const { return *__iter_; }
62+
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator->() const
5963
requires requires { __iter_.operator->(); }
6064
{
6165
return __iter_.operator->();
6266
}
6367

64-
_LIBCPP_HIDE_FROM_ABI __ra_iterator& operator++() {
68+
_LIBCPP_HIDE_FROM_ABI constexpr __ra_iterator& operator++() {
6569
++__iter_;
6670
return *this;
6771
}
6872

69-
_LIBCPP_HIDE_FROM_ABI __ra_iterator operator++(int) {
73+
_LIBCPP_HIDE_FROM_ABI constexpr __ra_iterator operator++(int) {
7074
__ra_iterator __tmp(*this);
7175
++*this;
7276
return __tmp;
7377
}
7478

75-
_LIBCPP_HIDE_FROM_ABI __ra_iterator& operator--() {
79+
_LIBCPP_HIDE_FROM_ABI constexpr __ra_iterator& operator--() {
7680
--__iter_;
7781
return *this;
7882
}
7983

80-
_LIBCPP_HIDE_FROM_ABI __ra_iterator operator--(int) {
84+
_LIBCPP_HIDE_FROM_ABI constexpr __ra_iterator operator--(int) {
8185
__ra_iterator __tmp(*this);
8286
--*this;
8387
return __tmp;
8488
}
8589

86-
_LIBCPP_HIDE_FROM_ABI __ra_iterator& operator+=(difference_type __x) {
90+
_LIBCPP_HIDE_FROM_ABI constexpr __ra_iterator& operator+=(difference_type __x) {
8791
__iter_ += __x;
8892
return *this;
8993
}
9094

91-
_LIBCPP_HIDE_FROM_ABI __ra_iterator& operator-=(difference_type __x) {
95+
_LIBCPP_HIDE_FROM_ABI constexpr __ra_iterator& operator-=(difference_type __x) {
9296
__iter_ -= __x;
9397
return *this;
9498
}
9599

96-
_LIBCPP_HIDE_FROM_ABI decltype(auto) operator[](difference_type __n) const { return *(*this + __n); }
100+
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator[](difference_type __n) const { return *(*this + __n); }
97101

98102
_LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const __ra_iterator& __x, const __ra_iterator& __y) {
99103
return __x.__iter_ == __y.__iter_;
100104
}
101105

102-
_LIBCPP_HIDE_FROM_ABI friend bool operator<(const __ra_iterator& __x, const __ra_iterator& __y) {
106+
_LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<(const __ra_iterator& __x, const __ra_iterator& __y) {
103107
return __x.__iter_ < __y.__iter_;
104108
}
105109

106-
_LIBCPP_HIDE_FROM_ABI friend bool operator>(const __ra_iterator& __x, const __ra_iterator& __y) { return __y < __x; }
110+
_LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>(const __ra_iterator& __x, const __ra_iterator& __y) {
111+
return __y < __x;
112+
}
107113

108-
_LIBCPP_HIDE_FROM_ABI friend bool operator<=(const __ra_iterator& __x, const __ra_iterator& __y) {
114+
_LIBCPP_HIDE_FROM_ABI friend constexpr bool operator<=(const __ra_iterator& __x, const __ra_iterator& __y) {
109115
return !(__y < __x);
110116
}
111117

112-
_LIBCPP_HIDE_FROM_ABI friend bool operator>=(const __ra_iterator& __x, const __ra_iterator& __y) {
118+
_LIBCPP_HIDE_FROM_ABI friend constexpr bool operator>=(const __ra_iterator& __x, const __ra_iterator& __y) {
113119
return !(__x < __y);
114120
}
115121

116-
_LIBCPP_HIDE_FROM_ABI friend auto operator<=>(const __ra_iterator& __x, const __ra_iterator& __y)
122+
_LIBCPP_HIDE_FROM_ABI friend constexpr auto operator<=>(const __ra_iterator& __x, const __ra_iterator& __y)
117123
requires three_way_comparable<_Iterator>
118124
{
119125
return __x.__iter_ <=> __y.__iter_;
120126
}
121127

122-
_LIBCPP_HIDE_FROM_ABI friend __ra_iterator operator+(const __ra_iterator& __i, difference_type __n) {
128+
_LIBCPP_HIDE_FROM_ABI friend constexpr __ra_iterator operator+(const __ra_iterator& __i, difference_type __n) {
123129
auto __tmp = __i;
124130
__tmp += __n;
125131
return __tmp;
126132
}
127133

128-
_LIBCPP_HIDE_FROM_ABI friend __ra_iterator operator+(difference_type __n, const __ra_iterator& __i) {
134+
_LIBCPP_HIDE_FROM_ABI friend constexpr __ra_iterator operator+(difference_type __n, const __ra_iterator& __i) {
129135
return __i + __n;
130136
}
131137

132-
_LIBCPP_HIDE_FROM_ABI friend __ra_iterator operator-(const __ra_iterator& __i, difference_type __n) {
138+
_LIBCPP_HIDE_FROM_ABI friend constexpr __ra_iterator operator-(const __ra_iterator& __i, difference_type __n) {
133139
auto __tmp = __i;
134140
__tmp -= __n;
135141
return __tmp;
136142
}
137143

138-
_LIBCPP_HIDE_FROM_ABI friend difference_type operator-(const __ra_iterator& __x, const __ra_iterator& __y) {
144+
_LIBCPP_HIDE_FROM_ABI friend constexpr difference_type operator-(const __ra_iterator& __x, const __ra_iterator& __y) {
139145
return __x.__iter_ - __y.__iter_;
140146
}
141147
};

0 commit comments

Comments
 (0)