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> {};
}