Boost logo

Boost :

Subject: Re: [boost] Constructing string_ref from rvalue string
From: Gavin Lambert (gavinl_at_[hidden])
Date: 2017-03-20 22:57:42


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.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk