https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85973
--- Comment #6 from Leonid Satanovsky <leonid.satanovsky at gmail dot com> --- As you are marking other bugs as duplicates of the current bug, please don't forget to transfer the useful test cases not mentioned in current bug (e.g. GccFailedNoDiscard2 case seen below): struct [[nodiscard]] GccFailedNoDiscard1 {}; struct GccFailedNoDiscard2 { [[nodiscard]] GccFailedNoDiscard2() = default;}; template<class T> struct [[nodiscard]] GccFailedNoDiscard3 {}; struct GccOKNoDiscard1 { [[nodiscard]] GccOKNoDiscard1() {}}; template<class T> struct GccOKNoDiscard2 { [[nodiscard]] GccOKNoDiscard2() {}}; int main() { GccFailedNoDiscard1 {}; GccFailedNoDiscard2 {}; GccFailedNoDiscard3<void> {}; GccOKNoDiscard1 {}; GccOKNoDiscard2<void> {}; }