@lesserfish There are plenty - and, as I said, the merits or otherwise of them are matters of opinion and debate. But consider a function
SomeType initialise_and_register(SomeType &x)
which stores the address of its argument somewhere for later usage, and returns a value. One possible usage of that would be
SomeType foo = initialise_and_register(foo);
. Even getting away from a debate about functions that store pointers to their arguments in global storage, a certain percentage of programmers would prefer that usage over (say)
SomeType foo; foo = initialise_and_register(foo);
—
Peter 54 secs ago