On 18/07/2020 13:49, Öö Tiib wrote:
> On Saturday, 18 July 2020 00:47:32 UTC+3,
anho...@gmail.com wrote:
>> Hi Experts,
>>
>> I have a question for following code:
>>
<snip>
That's a good point regarding const, if it is removed gcc will, as
expected, move:
call p(true), expect NRVO
var address: 0x7ffd50656360
buf address: 0x5584106ba280
var address: 0x7ffd506563b0
buf address: 0x5584106ba280
===============
call p(false), expect NRVO
var address: 0x7ffd50656360
buf address: 0x5584106ba280
var address: 0x7ffd506563b0
buf address: 0x5584106ba280
Clang does apply cop[y elision, with the const:
p$ clang++ -m64 -std=c++17 x.cc && ./a.out
call p(true), expect NRVO
var address: 0x7fff4a401478
buf address: 0x2575280
var address: 0x7fff4a401478
buf address: 0x2575280
===============
call p(false), expect NRVO
var address: 0x7fff4a401448
buf address: 0x2575280
var address: 0x7fff4a401448
buf address: 0x2575280
--
Ian.