Tell me more ×  Many bad things happened and continue to happen
(or not, who knows, anything can happen) due to undefined
behavior. I understand that this was introduced to leave some
wiggle-room for compilers to optimize, and maybe also to make
C++ easier to port to different platforms and architectures.
However the problems caused by undefined behavior seem to be too
large to be justified by these arguments. What are other
arguments for undefined behavior? If there are none, why does
undefined behavior still exist?  Edit To add some motivation for
my question: Due to several bad experiences with less C++-crafty
co-workers I have gotten used to making my code as safe as
possible. Assert every argument, rigorous const-correctness and
stuff like that. I try to leave as little room has possible to
use my code the wrong way, because experience shows that, if
there are loopholes, people will use them, and then they will
call me about my code being bad. I consider making my code as
safe as possible a good practice