> The obvious question is of course: Why not?

Because of variations within C++, especially in regard to implementation
of name mangling, default function attributes, implementation of classes,
RTTI, etc.  Anytime the standard changes, you have to change binary
compatibility.  Likewise, many new optimizations require binary
differences.  Since there hasn't until recently been a C++ binary
standard, each compiler was free to implement the language however they
wish, so if your first compiler compiles the function foo() as
foo_returns_int() and another compiler compiles foo() as foo$intpp(), then
applications compiled for one won't work for the other, because the
function names would be different.  In addition, to support RTTI, you need
some method of determining types at runtime, which would require
additional space in each class, which means that the library would be
expecting an object of X size, when you send it an object of Y size.

Exceptions are even nastier, because they _really_ slow down your code.
Therefore, everyone is always trying to make that faster, each time
breaking binary compatibility.

Jon


>
> - Toralf
>
>
>
> --
> redhat-list mailing list
> unsubscribe mailto:[EMAIL PROTECTED]
> https://www.redhat.com/mailman/listinfo/redhat-list
>


-- 
redhat-list mailing list
unsubscribe mailto:[EMAIL PROTECTED]
https://www.redhat.com/mailman/listinfo/redhat-list

Reply via email to