On Debian 10.10 32-bit with GCC 8.3.0:
```
...
bench/peer_eviction.cpp: In function ‘void EvictionProtectionCommon(ankerl::nanobench::Bench&, int, std::function<void(NodeEvictionCandidate&)>)’:
bench/peer_eviction.cpp:30:51: warning: narrowing conversion of ‘(((uint64_t)(& bench)->ankerl::nanobench::Bench::epochs()) * (& bench)->ankerl::nanobench::Bench::epochIterations())’ from ‘uint64_t’ {aka ‘long long unsigned int’} to ‘std::vector<std::vector<NodeEvictionCandidate> >::size_type’ {aka ‘unsigned int’} inside { } [-Wnarrowing]
     std::vector<Candidates> copies{bench.epochs() * bench.epochIterations(), candidates};
                                    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
...
```

`bench/peer_eviction.cpp` was added recently in #22284.
#include <bench/bench.h>
#include <net.h>
#include <netaddress.h>
#include <random.h>
#include <test/util/net.h>
#include <test/util/setup_common.h>
#include <algorithm>
#include <functional>
#include <vector>
static void EvictionProtectionCommon(
    benchmark::Bench& bench,
    int num_candidates,
    std::function<void(NodeEvictionCandidate&)> candidate_setup_fn)
{
    using Candidates = std::vector<NodeEvictionCandidate>;
    FastRandomContext random_context{true};
    bench.warmup(100).epochIterations(1100);
    Candidates candidates{GetRandomNodeEvictionCandidates(num_candidates, random_context)};
    for (auto& c : candidates) {
        candidate_setup_fn(c);
    }
    std::vector<Candidates> copies{bench.epochs() * bench.epochIterations(), candidates};
    size_t i{0};
    bench.run([&] {
        ProtectEvictionCandidatesByRatio(copies.at(i));
        ++i;
    });
}
static void EvictionProtection0Networks250Candidates(benchmark::Bench& bench)