https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88692

            Bug ID: 88692
           Summary: Spurious "redundant move in return statement"
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: d25fe0be at outlook dot com
  Target Milestone: ---

From https://en.cppreference.com/w/cpp/language/member_functions:

> Note: unlike cv-qualification, ref-qualification does not change the 
> properties of the this pointer: within a rvalue ref-qualified function, *this 
> remains an lvalue expression. 

But GCC reports "redundant move" when compiling the following snippet:

```
#include <utility>

struct X {
    X f() && {
        return std::move(*this);
    }
};
```

Live example: https://wandbox.org/permlink/9sD1NnyoDWnKE92C

Reply via email to