Генерация случайных значений для константных distribution и engine

Почему данный код компилируется, хотя оператор () является неконстантным как у distribution, так и у engine?

#include <algorithm>
#include <functional>
#include <iostream>
#include <random>
#include <vector>


int main() {
    const auto engine = std::default_random_engine(std::random_device{}());
    const auto distribution = std::uniform_int_distribution<int>(1, 100);
    const auto generator = std::bind_front(distribution, engine);

    auto random_values = std::vector<int>(42);
    std::ranges::generate(random_values, generator);

    for (const auto x : random_values) {
        std::cout << x << '\n';
    }
}

Ответы (0 шт):