Why the result of returning lvalue from function is that that object `std::vector<int> v` in `main()` function has same memory address as returned object `std::vector<int> vec` in a `get_vec()` function, even though these objects exist in a different stack frame ?

Why there is not called move constructor ?

```
#include <iostream>
#include <vector>

std::vector<int> get_vec()
{
    std::vector<int> vec = { 1, 2, 3, 4, 5 }; 
    std::cout << "get_vec():\n" << &vec << '\n' << vec.data() << "\n\n";   
    return vec;
}

int main()
{
    std::vector<int> v = get_vec();
    std::cout << "main():\n" << &v << '\n' << v.data() << "\n\n";   

    return 0;
}

```

```
OUTPUT:
get_vec():
0x7a07ee93baa0
0x226b290

main():
0x7a07ee93baa0
0x226b290

```