https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425
--- Comment #49 from Jakub Jelinek <jakub at gcc dot gnu.org> --- All that means is for APIs for which cast to void as silencing is meant to be ok should be using [[nodiscard]] rather than __attribute__((warn_unused_result)). APIs which do not want that should keep using warn_unused_result. When that attribute was being added, the glibc folks that requested it specially asked for casts to void not being a way to silence the attribute because the attributes were added to functions where users really should use the return value rather than silently ignore it.