I still don't like the formatted output for the lightweight mode, it
adds a dependency on I/O support in libc, which is a problem for
embedded systems.
The idea was to just add really cheap checks and abort :-(
Have you compared codegen with and without assertion mode? How much
more code is added to member functions like operator[] that must be
inlined for good performance? Is it likely to affect inlining
decisions?
I suspect it will have a much bigger impact than if we just use
__builtin_abort() as I made it do originally.
If these checks become more complex then people are not going to
enable them by default, and we probably won't want to make them
enabled by _FORTIFY_SOURCE.