https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425
--- Comment #43 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Andrew Church from comment #40) > My rationale for changing the default behavior is that the wider community > consensus, as evidenced by things like the C++ (and C2x) [[nodiscard]] > specification, the behavior of Clang, and the balance of comments on this > bug, seems to be that casting a discarded return value to void should > suppress any warning about the discarded value; and under the principle of > least surprise, GCC should follow that consensus by default even if it also > provides alternative behaviors. That is not the consensus, no. "Consensus" does not mean doing what the unthinking masses shout. There already are easy ways to deal suppress the error, very direct, and very descriptive ways. A cast to void is round-about, cryptic, and already is cargo-cult, before this attribute existed even! So allowing casts to void to suppress this warning means the warning becomes less useful, and people will write worse code. That is not something GCC should encourage IMO.