https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70647
Bug ID: 70647 Summary: Feature request: warning for self-moving in constructors Product: gcc Version: unknown Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: matt at godbolt dot org Target Milestone: --- Consider the following code: #include <utility> // for std::move struct A { int a; int b; A(A &&o) : a(a), // I get a warning here... b(o.b) {} }; struct B { int a; int b; B(B &&o) : a(std::move(a)), // but sadly not here b(std::move(o.b)) {} }; [ c.f https://godbolt.org/g/v7zPYL ] In the non-moving case, I get a warning that I've typoed and assigned a with itself. In the move case, there's no such warning. I appreciate this is probably difficult (if not impossible) to detect, but if there's any way it can be done, it would save a painful debugging session or two!