
20 Mar
2017
20 Mar
'17
10:57 p.m.
On 20/03/2017 16:14, Tim Song wrote:
On Sun, Mar 19, 2017 at 10:42 PM, Gavin Lambert wrote:
If you are calling a function that returns a std::string (thus you have an rvalue temporary) and you are immediately wrapping this in a string_ref (as another temporary) and then passing this as a function parameter, AFAIK the compiler is within its rights to delete the temporary std::string prior to the call as it is not the actual parameter.
Nope. Those temporaries live until the end of the enclosing full-expression.
Well, yes, in theory. Though I've been burned in the past by some (older) compilers doing it wrong in these sorts of cases, so that usage makes me nervous. Any modern compiler shouldn't have an issue with it though.