In effetti una soluzione può essere come quella illustrata da Gauss, con due stack, uno 'che riceve' le Push chiamato ad esempio 'receive', l'altro 'che rilascia' con la Pop chiamato ad esempio 'release'. Ovviamente il contenuto di 'release' viene 'aggiornato' solo quando esso è vuoto e solo se si chiama una Pop, ad esempio :
bool Queue::pop(T &e){
T temp;
if(release.isEmpty())
while(receive.pop(temp)) release.push(temp);
if (release.isEmpty()) return false;
else{
release.pop(temp);
e=temp;
return true;
}
}