On 12/2/20 6:42 PM, Jeff Garland via Boost wrote:
On Wed, Dec 2, 2020 at 3:12 AM Andrey Semashev via Boost < boost@lists.boost.org> wrote:
You have to give credit to libstdc++ developers at the very least. It maintains backward ABI compatibility across all C++ standard versions and across libstdc++ releases for many years. I think, libc++ also does the same, although I'm not following its development.
Well 'the credit' is that anything that changes the std:: ABI is a fight in the committee -- there's even a special working group - so real tough to get an ABI change into the standard. To me it makes sense that boost should break ABI like mad and the standard should strive for more stability with occasional ABI breaks.
Although the committee does monitor changes that may affect ABI in real implementations, the standard does not define the ABI. It is implementors burden to maintain a stable ABI. As an example of this, libstdc++ had to switch their basic_string to a non-reference counted implementation when they added support for C++11, and they had to maintain both versions ever since. The standard, obviously, only defines one basic_string.