#include <iostream>
#include <functional>

struct X {
    X(int arg = 1) :
        someVar(arg)
    {
        std::cout << "X(" << arg << ")" << std::endl;
    }

    ~X()
    {
        std::cout << "~X(" << someVar << ")" << std::endl;
    }

    int someVar;
};

std::function<void()> get_lambda(int number)
{
    X x(number);
    return [&x]() {
        std::cout << "lambda from get_lambda: x.someVar == " << x.someVar << std::endl;
    };
}

int main()
{
    auto lambda = get_lambda(42);
    lambda();

    return 0;
}
