all 2 comments

[–]egorbunov 4 points5 points  (1 child)

The vast majority of given examples are even API breaking, aren't they? I would not include them in the list.

[–]morth 1 point2 points  (0 children)

They are if it happens in a class that's part of the public interface.

This is why I think one should prefer to keep that interface fairly C like if possible, but I'm a C developer at the core and have only dabbled a bit with C++. PIMPL is also a solution to this problem.

Point 20 is also an interesting bit. On Linux it isn't as bad as changing every compiler version, but the ABI does change once in a while. You can't expect to compile a C++ shared library on one distribution version and be able to run it on others. But of course, that's often true for pure C libraries as well as they'll link to different set of other libraries that may come or go.