https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116866
--- Comment #5 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #3)
> If we add [[nodiscard]] to the constructors of the standard exception types
> then we get a warning with no compiler changes needed:
Is it possible to do this to the standard library? Even if it is, maybe a
warning for discarded temporary of a type that inherits from std::exception is
still useful.
A possible wording:
warning: discarding temporary exception object; did you mean to `throw' it?
[-Wmissing-throw]
std::invalid_argument ("division by zero");
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<fix-it hint suggesting prepending "throw ">
note: `std::invalid_argument' is derived from `std::exception'
<show the decl of std::invalid_argument>
Probably shouldn't issue this warning for e.g.: named local that you forgot to
throw:
#include <stdexcept>
int divide(int num, int denom) {
std::invalid_argument exc ("division by zero");
return num / denom;
}
since the unused-variable warning should detect it.