
Zitat von Artyom <artyomtnk@yahoo.com>:
Maintaining binary compatability in C++ requires great effort and has performance implications, so I don't think it's reasonable to ask for it.
The performance implications are quite neligable, similar to usage of virtual functions, on the other hand, it even may improve performance because of smaller size of executable... But this is not the point;
Nobody says keeping ABI is simple
it´s not practical for templates and impossible in some cases. example for not pratical: Boost.Intrusive changed the return type of intrusive::unordered_set::erase from iterator to void. for most use cases, this does not break source compatibility, but binary. using a virtual function or similar for Container::erase is not practical. example for impossible: Intrusive also changed the return type of unordered_set::erase_and_dispose, which is a template function.
The problem is that Boost today is what JDK for Java. What would
Java/JDK has generics and an inlining JIT-compiler.