#include <iostream>
using namespace std;
struct A {
A() = default;
A(const A&) { cout << "copy\n"; }
};
int main() {
A a;
cout << "default construction\n";
const A* pa = &a;
cout << "obtaining address of\n";
const A& ra = *pa;
cout << "indirection\n";
[](const A* pa){ cout << "lambda entry\n"; return *pa; }(pa);
cout << "lambda return\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEgewogICAgQSgpID0gZGVmYXVsdDsKICAgIEEoY29uc3QgQSYpIHsgY291dCA8PCAiY29weVxuIjsgfQp9OwoKaW50IG1haW4oKSB7CiAgICBBIGE7CiAgICBjb3V0IDw8ICJkZWZhdWx0IGNvbnN0cnVjdGlvblxuIjsKICAgIGNvbnN0IEEqIHBhID0gJmE7CiAgICBjb3V0IDw8ICJvYnRhaW5pbmcgYWRkcmVzcyBvZlxuIjsKICAgIGNvbnN0IEEmIHJhID0gKnBhOwogICAgY291dCA8PCAiaW5kaXJlY3Rpb25cbiI7CiAgICBbXShjb25zdCBBKiBwYSl7IGNvdXQgPDwgImxhbWJkYSBlbnRyeVxuIjsgcmV0dXJuICpwYTsgfShwYSk7ICAgIAogICAgY291dCA8PCAibGFtYmRhIHJldHVyblxuIjsKfQ==