Since in C++, primitive types destructors do nothing [Do Primitive Types in C++ have destructors?], is it safe to rely on the value of int a to be the same after a call to queue::emplace? Specifically,
queue<int> q;
int a = 5;
q.emplace(a);
// is a==5 here?
Perhaps the first question would also answer this, though for this example:
queue<pair<int,int>> q;
int a = 1, b = 2;
q.emplace(a,b);
// is a == 1, b == 2?