I was slightly amazed I had never heard of such a thing, but sure enough, it does exist: It's -Wunused-result on gcc (https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html). You still need to manually add the warn_unused_result attribute to each function though.
There's also the [[nodiscard]] attribute of c++17.
To be fair, there are compiler flags to check this. And if not, there are static analysis tools that do the same.