Thanks. Just to make sure - if they weren't references, the values would only be swapped in the function call's brief existence, but not outside of it (i.e. the caller's scope) - correct?
If they weren't references, you'd be passing by value, so, during the function call's brief existence, copies of the outside variables would be created, swapped and destroyed. The outside variables would be unchanged.