nodiscard is closer to (and sometimes expands to) nodiscard from
C23 and C++17 so prefer it to the homegrown result_use_check.
When nodiscard does expand to nodiscard it must appear entierly
before the function declaration (or between the function name
and argument list) so relocate as appropriate. This differs from
attribute((warn_unused_result)) used by result_use_check which
is more flexible.
Sponsored by: DARPA, AFRL