#include #include #include struct Buka { int x; }; void print_buka(std::shared_ptr buka, int y) { printf("&buka=%p uc=%lu\n", buka.get(), buka.use_count()); printf("buka.x=%d; y=%d\n", buka->x, y); } std::function close_it() { std::shared_ptr buka; buka.reset(new Buka()); buka->x = 123; std::function clos = [buka] { print_buka(buka, 456); }; return clos; } int main() { auto clos = close_it(); clos(); }