[Bug c++/77984] Invalid warning on templated operator= with -Weffc++
egallager at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Aug 22 20:34:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77984
Eric Gallager <egallager at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2017-08-22
CC| |egallager at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #5 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Victor Paléologue from comment #0)
> Created attachment 39810 [details]
> Stand-alone C++ code reproducing a false warning
>
> In the code attached, Thing::operator= is defined as following:
>
> struct Thing
> {
> template<typename T>
> Thing& operator=(const T&)
> {
> return *this;
> }
> };
>
> Compiling it, I get a warning that does not seem legitimate:
>
> $ g++ false_warning.cpp -Weffc++
> false_warning.cpp: In member function ‘Thing& Thing::operator=(const T&)’:
> false_warning.cpp:6:13: warning: ‘operator=’ should return a reference to
> ‘*this’ [-Weffc++]
> return *this;
> ^~~~
>
Confirmed.
(In reply to Jonathan Wakely from comment #4)
> No, but IMHO it should be (unless somebody fixes it, see PR 16166 and PR
> 16168 and PR 55837 and others).
I'd rather see it fixed; I might give it a try myself once I learn enough c++
to know what I'm doing. In the meantime I'll make a meta-bug to gather all the
-Weffc++ bugs together.
More information about the Gcc-bugs
mailing list