If I push an existing object into a queue:
struct Node {int x; int y;};
std::vector<Node> vec;
vec.push_back(Node(1, 3));
std::queue<Node> q;
q.push(vec[0]);
At the last line, does q store the address (pointer or reference, whatever except the object itself) of vec[0], or does it copy the whole Node object into q?