Consider:
int & foo () {
    int b = 2;
    return b;
}
int main() {
    int a = foo();
    std::cout << "a: " << a << std::endl;
}
Foo returns reference to variable b, which is out of scope of main. The cout prints 2. Does this mean that a copy of b is created? Or is it that lifetime of b is extended to the lifetime of a?
