#include <iostream>
#include <functional>
 
class foo;
foo *f;
 
class foo
{
  std::function<void()> bar;
 
public:
  foo(std::function<void()> bar)
    : bar(bar)
  {
    f = this;
  }
 
  void run()
  {
    bar();
  }
};
 
int &func()
{
  int *i = new int;
  std::cout << i << std::endl;
  new foo
    ([=]
     {
       *i = 42;
       std::cout << i << std::endl;
     });
  return *i;
}
 
int main()
{
  int &i = func();
  f->run();
  std::cout << &i << std::endl;
  return 0;
}