Is this version really needed? It is a bit harder to read function calls that return values by reference parameters. The performance is equal in most cases anyway due to return value optimization.