29
you are viewing a single comment's thread
view the rest of the comments
[-] lysdexic@programming.dev 1 points 11 months ago

I wonder if the language could be updated so these extra std::move invocations actually become harmless? return std::move is something that I see used quite a bit.

These std::move invocations are harmless, as they only cast objects to their rvalue reference.

The destructive bit takes place in the type they are assigned to, as it invokes either a move constructor or a move assignment operator, and calling those implies that the object you just passed to std::move will be invalidated after the call and should not be used subsequently.

[-] DanielaKEngert@hachyderm.io 1 points 11 months ago

@lysdexic @QuadriLiteral Eh, no. Really. Changing the value category disables RVO

[-] lysdexic@programming.dev 1 points 11 months ago

RVO

I recommend you read the thread.

[-] DanielaKEngert@hachyderm.io 1 points 11 months ago
[-] lysdexic@programming.dev 1 points 11 months ago

It doesn't look like it, otherwise you'd be aware that the whole point of this submission is that casting return values with std::move disables RVO.

[-] DanielaKEngert@hachyderm.io 1 points 11 months ago

@lysdexic You claimed otherwise:
"
These std::move invocations are harmless, as they only cast objects to their rvalue reference.
"
If you were right, we wouldn't have the motivation to look at this in EWG.

[-] lysdexic@programming.dev 1 points 11 months ago

If you were right, we wouldn’t have the motivation to look at this in EWG.

I am right. Not benefiting from RVO does not mean you're harming anyone.

Again, I recommend you read the submission and also the discussion.

load more comments (2 replies)
load more comments (2 replies)
load more comments (3 replies)
this post was submitted on 25 Nov 2023
29 points (96.8% liked)

C++

1732 readers
1 users here now

The center for all discussion and news regarding C++.

Rules

founded 1 year ago
MODERATORS