J
James Kanze
innews:[email protected]:
[...]
They have the concept of checked iterators,
So does g++. And Sun CC if you use the STLPort.
which is very similar to asserts, but not implemented via
assert(). And this feature is on also in Release builds by
default.
Sort of. Like most modern compilers, Microsoft has a fairly
wide variety of debugging options: NDEBUG is just the tip of the
iceberg. By default (but who's stupid enough to use the
defaults), you get all of them in "debug" mode; some (but not
all) are turned off in release mode, and you can turn on or off
any in either mode (or create a third mode, if that's
appropriate for some reason).
One has to take extra steps to turn it off. Ok, I understand
that as this feature affects binary compatibility, they would
like to to have the same setting in Debug and Release builds
so that the libraries from different builds can be mixed.
Except that they can't, really. (At least not pre-VC10.0.)
I've encountered a number of problems because of incompatible
debugging options when using std::string. (The other classes
don't seem to be affected.)
Though, I would consider a debugging feature affecting the
binary compatibility of libraries as a design failure.
Me too, but realistically... Microsoft does far better than
most in this regard, even if they aren't perfect.