I'd find it more natural to return references here to be able to queue using "." here. I think every time I've seen this in cpp so far it was done via references