#include <iostream>
#include <memory>
#include <utility>

auto make_multiplier(int factor) {
    auto owner = std::make_unique<int>(factor);
    return [state = std::move(owner)](int input) {
        return input * (*state);
    };
}

int main() {
    auto times_four = make_multiplier(4);
    auto times_zero = make_multiplier(0);
    std::cout << times_four(6) << '\n';
    std::cout << times_zero(6) << '\n';
    return 0;
}
