#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";
}