Isn't there some way you can avoid making a copy every time you remove an item from the queue? It seems ridiculous that there's no method to remove and return an item by reference without destroying the original item, as there is in Java.