Date: Fri, 29 Jul 2022 20:26:17 +0200
pt., 29 lip 2022 o 20:20 Arthur O'Dwyer <arthur.j.odwyer_at_[hidden]> napisał(a):
>
> On Thu, Jul 28, 2022 at 5:26 PM Marcin Jaczewski via Std-Proposals <std-proposals_at_[hidden]> wrote:
>>
>> Currently there are multiple problems linked to lifetime of function parameters.
>> Simply current default behavior does not fit all corner cases.
>>
>> Example is `std::unique` that generates subpar code because the call
>> site is a firewall that prevents the compiler to see at once destructor and move operation.
>
>
> Can you elaborate on this? I admit I've never thought about `std::unique` in this context before; but now that I have spent an hour or so thinking about it, I still don't see how its current behavior can be improved. One might rewrite `std::unique` to use swap instead of move-assignment, but one can't really rewrite it to use relocation because `std::unique` is never responsible for destroying anything. N objects go in, N objects come out (and in the same memory locations, too).
> https://p1144.godbolt.org/z/8v1Yj1eGK
>
> What would you do differently here?
>
Sorry, I mistyped, I mean type `std::unique_ptr` not algorythm `std::unique`.
> –Arthur
>
> On Thu, Jul 28, 2022 at 5:26 PM Marcin Jaczewski via Std-Proposals <std-proposals_at_[hidden]> wrote:
>>
>> Currently there are multiple problems linked to lifetime of function parameters.
>> Simply current default behavior does not fit all corner cases.
>>
>> Example is `std::unique` that generates subpar code because the call
>> site is a firewall that prevents the compiler to see at once destructor and move operation.
>
>
> Can you elaborate on this? I admit I've never thought about `std::unique` in this context before; but now that I have spent an hour or so thinking about it, I still don't see how its current behavior can be improved. One might rewrite `std::unique` to use swap instead of move-assignment, but one can't really rewrite it to use relocation because `std::unique` is never responsible for destroying anything. N objects go in, N objects come out (and in the same memory locations, too).
> https://p1144.godbolt.org/z/8v1Yj1eGK
>
> What would you do differently here?
>
Sorry, I mistyped, I mean type `std::unique_ptr` not algorythm `std::unique`.
> –Arthur
Received on 2022-07-29 18:26:29