https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106847
Bug ID: 106847
Summary: deprecated class data member makes the class generate
diagnostics even when the member is not used
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: avi at scylladb dot com
Target Milestone: ---
A class with a deprecated member:
struct foo {
[[deprecated]] bool x;
};
Cannot be used without lots of noise from the compiler:
foo make_a_foo() {
foo f;
return f;
}
<source>: In function 'foo make_a_foo()':
<source>:10:12: warning: 'f' is used uninitialized [-Wuninitialized]
10 | return f;
| ^
<source>:9:9: note: 'f' declared here
9 | foo f;
| ^
Compiler returned: 0
Although I didn't touch x, the compiler thinks I did. IMO synthesized
constructors (and assignment operators) should suppress the warning and only
explicit access by the user should trigger the warning.