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

            Bug ID: 84364
           Summary: [8 Regression] -Weffc++ warns on "return *this" in
                    template after r253599
           Product: gcc
           Version: 8.0
               URL: https://bugzilla.redhat.com/show_bug.cgi?id=1544675
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dmalcolm at gcc dot gnu.org
  Target Milestone: ---

Created attachment 43405
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43405&action=edit
Reproducer

This downstream bug report:
  https://bugzilla.redhat.com/show_bug.cgi?id=1544675
describes a false positive from -Weffc++ on the attached code.

I extended the reproducer to cover the 4 combinations of template vs
non-template and lvalue-reference (&) vs rvalue-reference (&&).

It appears to only affect the template cases.

../../src/rhbz1544675.C: In member function ‘t1<T>& t1<T>::operator=(t1<T>&&)’:
../../src/rhbz1544675.C:6:13: warning: ‘operator=’ should return a reference to
‘*this’ [-Weffc++]
     return *this;
             ^~~~
../../src/rhbz1544675.C: In member function ‘t3<T>& t3<T>::operator=(t3<T>&)’:
../../src/rhbz1544675.C:19:13: warning: ‘operator=’ should return a reference
to ‘*this’ [-Weffc++]
     return *this;
             ^~~~

It seems to have started with r253599.

Reply via email to