C++ retry helper with capped backoff

C++
#include <algorithm>
#include <chrono>
#include <functional>
#include <random>
#include <thread>

bool retry(int attempts, const std::function<bool()>& op) {
    std::mt19937 rng{std::random_device{}()};
    for (int i = 0; i < attempts; ++i) {
        if (op()) return true;
        std::chrono::milliseconds base = std::chrono::milliseconds(100) * (1LL << i);
        auto delay = std::min(base, std::chrono::milliseconds(2000));
        std::uniform_int_distribution<int> jitter(0, int(delay.count() / 2));
        std::this_thread::sleep_for(delay + std::chrono::milliseconds(jitter(rng)));
    }
    return false;
}