https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106847
--- Comment #3 from Avi Kivity <avi at scylladb dot com> --- But I need it to be copied. It's a struct of options: struct options { bool frob = false; [[derecated]] bool quux = false; // will be removed soon bool grue = false; }; The fact that it's deprecated doesn't mean it can be coerced to false. Sure, I can create custom constructors and assignment operators, but I lose designated initializers. btw, the destructor doesn't trigger the deprecation warning, even though it does use the deprecated member. I think it's more reasonable to only emit the warning when the member is explicitly used.