Skip to content

Commit 6cb18ac

Browse files
committed
Fix iter_swap.pass.cpp (friendship issues)
1 parent 7198928 commit 6cb18ac

File tree

1 file changed

+7
-6
lines changed
  • libcxx/test/std/ranges/range.adaptors/range.join.with/range.join.with.iterator

1 file changed

+7
-6
lines changed

libcxx/test/std/ranges/range.adaptors/range.join.with/range.join.with.iterator/iter_swap.pass.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,14 @@ enum class IterKind { inner_view, pattern };
3232

3333
template <std::forward_iterator Iter, IterKind Kind>
3434
class IterSwapTrackingIterator {
35-
template <std::forward_iterator T, IterKind K>
36-
friend class IterSwapTrackingIterator;
37-
3835
public:
3936
using value_type = std::iter_value_t<Iter>;
4037
using difference_type = std::iter_difference_t<Iter>;
4138

39+
constexpr Iter get_iter() const { return iter_; }
40+
41+
constexpr SwapKind* get_flag() const { return flag_; }
42+
4243
IterSwapTrackingIterator() = default;
4344
constexpr explicit IterSwapTrackingIterator(Iter iter, SwapKind* flag = nullptr)
4445
: iter_(std::move(iter)), flag_(flag) {}
@@ -67,9 +68,9 @@ class IterSwapTrackingIterator {
6768
template <std::indirectly_swappable<Iter> OtherIter, IterKind OtherKind>
6869
friend constexpr decltype(auto)
6970
iter_swap(const IterSwapTrackingIterator& lhs, const IterSwapTrackingIterator<OtherIter, OtherKind>& rhs) {
70-
assert(lhs.flag_ != nullptr && rhs.flag_ != nullptr);
71-
*lhs.flag_ = *rhs.flag_ = SwapKind::with_different_type;
72-
return std::ranges::iter_swap(lhs.iter_, rhs.iter_);
71+
assert(lhs.flag_ != nullptr && rhs.get_flag() != nullptr);
72+
*lhs.flag_ = *rhs.get_flag() = SwapKind::with_different_type;
73+
return std::ranges::iter_swap(lhs.iter_, rhs.get_iter());
7374
}
7475

7576
private:

0 commit comments

Comments
 (0)