I’ve always found C++'s “trend” of handling normal or non-exceptional system errors with exceptions lackluster (and I’m being charitable). Overall trimming things down to (basically) passing around a couple integers and telling the user to check their manual is much better, much less error prone, and much more efficient and deterministic.


-Wunused-resultis good practice in generalI’m mixed on this one, because sometimes you’ll want to call a function for its side effects without caring about the return value. E. g. container methods returning an iterator that shows you where the side effect took place.
Right, so just cast the returned value to void:
(void)function();The new C++ way is
std::ignore = function();Neat, I learned something. I keep smashing C and C++ together on my head.
The notes on that page do suggest the same method I did, however.
First: it’s not new, it’s been around since C++03.
Second… it’s not even that great. It’s more characters to type and you have to deal with
stds and colons.(void)is a classic and works everywhere.But hey, at least it’s not
static_cast<void>(...).Cool, I didn’t know that was a thing 👍