3 ms·
Someone brought up this point during another discussion and initially I agreed with them. However, someone else suggested that if the function has more paramete
by nice_byte 11y ago
Someone brought up this point during another discussion and initially I agreed with them. However, someone else suggested that if the function has more parameters, an exception might happen when passing the arguments for the other parameters, so the transfer of ownership won't happen, but the caller will have already lost the ownership. Passing by rvalue reference means the caller retains ownership until the very last possible moment.
- merogin 11y agoDo you mean something like this? http://ideone.com/8tPPHy http://ideone.com/8tPPHy
- nice_byte 11y agoYes. It seems to work, but it might be a coincidence. The order of argument evaluation is undefined. It might be that the exception gets thrown before the ownership is transferred, but it's just luck. I have modified your example a bit, to better trace what's happening: http://ideone.com/tgh0xe http://ideone.com/tgh0xe
- merogin 11y agoAnd it won't work when switching the parameter order of byval, so you're correct. That's quite nasty.