Why the destructor of vector is called after "g" call? Thank you.

int g(vector vi);

void f(vector&& vi) {
    g(move(vi));
}