Regarding binary compatibility guarantees, I think the main point is being missed.
Because of inline functions and other factors, many implementation details of the standard library get baked into client object code. Every supplier of a C++ Standard Library implementation is well aware of this fact. They know that to claim that two releases are binary compatible, many implementation details, like the layout or member types of a class, cannot change. I can make this statement because all the implementers are members of the C++ Committee, and compatibility is one of the topics that informs every decision about language and library changes. For libCstd, among other libraries that we ship, we are careful that bug fixes and enhancements do not affect binary compatibility. Because of this constraint, there are bugs in some libraries that we can't fix. The maintainers of libstdcxx are equally aware of these issues. If they claim binary compatibility, it is reasonably safe to believe them. But that's not the whole story. Some of the libraries that we ship originate with third parties. We generally don't download updates of those libraries because of binary compatibility concerns. If a bug is reported on the library we ship, we fix it in our sources, sometimes by editing in a fix from the current library sources if it doesn't break compatibility. We tell customers that the libraries we ship are upwardly binary compatible across releases (you can link a new library version into an old program), but we make no claims about versions of the library they acquire elsewhere. The reason is not only because a different version of the source code might not be binary compatible, but also because libraries have dozens of configuration parameters that affect binary compatibility. Even with identical source code, a customer-built version of the library could be incompatible if configuration parameters were set differently. Bottom line: If we ship this library, we can safely claim continued binary compatibility for what we ship, because we will make it so. We cannot promise compatibility with libraries built by someone else. --- Steve Clamage, stephen.clamage at sun.com