Merge bitcoin/bitcoin#28687: C++20 std::views::reverse

2925bd537c refactor: use c++20 std::views::reverse instead of reverse_iterator.h (stickies-v)

Pull request description:

  C++20 introduces [`std::ranges::views::reverse`](https://en.cppreference.com/w/cpp/ranges/reverse_view), which allows us to drop our own `reverse_iterator.h` implementation and also makes it easier to chain views (even though I think we currently don't use this).

ACKs for top commit:
  achow101:
    ACK 2925bd537c
  maflcko:
    ACK 2925bd537c 🎷

Tree-SHA512: 567666ec44af5d1beb7a271836bcc89c4c577abc77f522fcc18bc6d4de516ae9b0df766d0bfa6dd217569e6878331c2aee1d9815620860375e3510dad7fed476
This commit is contained in:
merge-script
2024-08-09 09:51:19 +01:00
9 changed files with 22 additions and 66 deletions

View File

@@ -2,16 +2,14 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <prevector.h>
#include <serialize.h>
#include <streams.h>
#include <test/fuzz/FuzzedDataProvider.h>
#include <test/fuzz/fuzz.h>
#include <prevector.h>
#include <ranges>
#include <vector>
#include <reverse_iterator.h>
#include <serialize.h>
#include <streams.h>
namespace {
template <unsigned int N, typename T>
@@ -47,7 +45,7 @@ public:
assert(v == real_vector[pos]);
++pos;
}
for (const T& v : reverse_iterate(pre_vector)) {
for (const T& v : pre_vector | std::views::reverse) {
--pos;
assert(v == real_vector[pos]);
}
@@ -55,7 +53,7 @@ public:
assert(v == real_vector[pos]);
++pos;
}
for (const T& v : reverse_iterate(const_pre_vector)) {
for (const T& v : const_pre_vector | std::views::reverse) {
--pos;
assert(v == real_vector[pos]);
}

View File

@@ -3,17 +3,16 @@
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <prevector.h>
#include <vector>
#include <reverse_iterator.h>
#include <serialize.h>
#include <streams.h>
#include <test/util/random.h>
#include <test/util/setup_common.h>
#include <boost/test/unit_test.hpp>
#include <ranges>
#include <vector>
BOOST_FIXTURE_TEST_SUITE(prevector_tests, TestingSetup)
template<unsigned int N, typename T>
@@ -58,14 +57,14 @@ class prevector_tester {
for (const T& v : pre_vector) {
local_check(v == real_vector[pos++]);
}
for (const T& v : reverse_iterate(pre_vector)) {
local_check(v == real_vector[--pos]);
for (const T& v : pre_vector | std::views::reverse) {
local_check(v == real_vector[--pos]);
}
for (const T& v : const_pre_vector) {
local_check(v == real_vector[pos++]);
}
for (const T& v : reverse_iterate(const_pre_vector)) {
local_check(v == real_vector[--pos]);
for (const T& v : const_pre_vector | std::views::reverse) {
local_check(v == real_vector[--pos]);
}
DataStream ss1{};
DataStream ss2{};