Differential D102809 Diff 346561 libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.move/iter_move.pass.cpp
Changeset View
Changeset View
Standalone View
Standalone View
libcxx/test/std/iterators/iterator.requirements/iterator.cust/iterator.cust.move/iter_move.pass.cpp
Show First 20 Lines • Show All 44 Lines • ▼ Show 20 Lines | public: | ||||
constexpr void operator++(int) noexcept { ++base_; } | constexpr void operator++(int) noexcept { ++base_; } | ||||
[[nodiscard]] constexpr bool operator==(iterator_wrapper const& other) const noexcept { return base_ == other.base_; } | [[nodiscard]] constexpr bool operator==(iterator_wrapper const& other) const noexcept { return base_ == other.base_; } | ||||
private: | private: | ||||
I base_ = I{}; | I base_ = I{}; | ||||
}; | }; | ||||
class move_tracker { | |||||
public: | |||||
move_tracker() = default; | |||||
constexpr move_tracker(move_tracker&& other) noexcept : moves_{other.moves_ + 1} { other.moves_ = 0; } | |||||
constexpr move_tracker& operator=(move_tracker&& other) noexcept { | |||||
moves_ = other.moves_ + 1; | |||||
other.moves_ = 0; | |||||
return *this; | |||||
} | |||||
constexpr move_tracker(move_tracker const& other) = delete; | |||||
constexpr move_tracker& operator=(move_tracker const& other) = delete; | |||||
[[nodiscard]] constexpr int moves() const noexcept { return moves_; } | |||||
private: | |||||
int moves_ = 0; | |||||
}; | |||||
template <typename I> | template <typename I> | ||||
constexpr void unqualified_lookup_move(I first_, I last_, I result_first_, I result_last_) { | constexpr void unqualified_lookup_move(I first_, I last_, I result_first_, I result_last_) { | ||||
auto first = ::check_unqualified_lookup::unqualified_lookup_wrapper{std::move(first_)}; | auto first = ::check_unqualified_lookup::unqualified_lookup_wrapper{std::move(first_)}; | ||||
auto last = ::check_unqualified_lookup::unqualified_lookup_wrapper{std::move(last_)}; | auto last = ::check_unqualified_lookup::unqualified_lookup_wrapper{std::move(last_)}; | ||||
auto result_first = ::check_unqualified_lookup::unqualified_lookup_wrapper{std::move(result_first_)}; | auto result_first = ::check_unqualified_lookup::unqualified_lookup_wrapper{std::move(result_first_)}; | ||||
auto result_last = ::check_unqualified_lookup::unqualified_lookup_wrapper{std::move(result_last_)}; | auto result_last = ::check_unqualified_lookup::unqualified_lookup_wrapper{std::move(result_last_)}; | ||||
static_assert(!noexcept(std::ranges::iter_move(first)), "unqualified-lookup case not being chosen"); | static_assert(!noexcept(std::ranges::iter_move(first)), "unqualified-lookup case not being chosen"); | ||||
▲ Show 20 Lines • Show All 131 Lines • Show Last 20 Lines |