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.