#include #include #include #include int main() { int n = 5; auto own_copy = [n]() mutable { return ++n; }; auto borrow = [&n] { return ++n; }; const int a = own_copy(); assert(a == 6 && n == 5); const int b = borrow(); assert(b == 6 && n == 6); auto p = std::make_unique(9); auto owns_resource = [p = std::move(p)] { return *p; }; assert(!p && owns_resource() == 9); std::cout << a << ' ' << b << ' ' << owns_resource() << '\n'; }