[Bug c++/92145] New: -Wdeprecated-copy false-positive when inheriting base assignment operators
nok.raven at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Oct 17 23:24:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92145
Bug ID: 92145
Summary: -Wdeprecated-copy false-positive when inheriting base
assignment operators
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: nok.raven at gmail dot com
Target Milestone: ---
// https://godbolt.org/z/UAc5tq
struct base
{
base() { }
base(const base&) { }
base(base&&) { }
base& operator=(const base&) { return *this; }
base& operator=(base&&) { return *this; }
};
struct foo : base
{
//using base::base;
using base::operator=;
};
struct bar
{
bar& operator=(foo v)
{
value = v;
return *this;
}
foo value;
};
int main()
{
foo a;
foo{a};
}
source>: In member function 'bar& bar::operator=(foo)':
<source>:20:17: warning: implicitly-declared 'foo& foo::operator=(const foo&)'
is deprecated [-Wdeprecated-copy]
20 | value = v;
| ^
<source>:6:11: note: because 'foo' has user-provided 'base&
base::operator=(const base&)'
6 | base& operator=(const base&) { return *this; }
| ^~~~~~~~
<source>: In function 'int main()':
<source>:30:10: warning: implicitly-declared 'foo::foo(const foo&)' is
deprecated [-Wdeprecated-copy]
30 | foo{a};
| ^
<source>:6:11: note: because 'foo' has user-provided 'base&
base::operator=(const base&)'
6 | base& operator=(const base&) { return *this; }
| ^~~~~~~~
More information about the Gcc-bugs
mailing list