https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116441
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- #include <iostream> 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> {}; }