Both GCC and Clang (and MSVC partially) provide support for various sanitizers - dynamic analyzers that can do things like detect usage of undefined behavior, memory safety issues (use after free, leaks, etc.), thread-safety issues, etc. These have been very helpful lately for pinpointing and fixing issues that would be difficult to track down otherwise. I think it would be worth enabling ubsan (for undefined behavior) and asan (for sanitizing memory/addressing issues) by default for at least Debug builds to help catch these issues earlier.