initialized lambda captures - przykład z std::unique_ptr

0

Hej
Wie ktoś może czemu w poniższym przykładzie na końcu adres jest 0 dla ptr2? Wiadomo takich rzeczy na codzień nie stosuje się i dałbym -2 w gerricie. Pytanie typowo pod rozmowę kwalifikacyjną jak na jakiegoś buraka się trafi, który takowe może zadać i na bazie tego ocenia czy umiem programować czy nie:)

auto ptr = std::make_unique<int>(10);
  unique_ptr<int> ptr2(nullptr);
  cout << ptr.get() << endl;  //adres
  cout << ptr2.get() << endl;  //0
  auto lambda = [ptr2 = std::move(ptr)] {};
  cout << "after" << endl; 
  cout << ptr.get() << endl; //0
  cout << ptr2.get() << endl;  //0 czemu????
2

ptr2 wewnątrz listy lambdy to nowa zmienna o nazwie ptr2, niemająca żadnego związku z ptr2 z main().

1 użytkowników online, w tym zalogowanych: 0, gości: 1