Re: C++ Frequently Questioned Answers
On 4 Nov, 10:45, Alex Shulgin <alex.shul...@gmail.com> wrote:
The problem with having no run time encapsulation /in C++/ is that the
language has no reflection and several different and non-trivial
commercially significant ABIs.
"No binary implementation rules"
Frankly, I don't see your point here. You have tried to link g++-
compiled libraries with msvc-compiled code, or what exactly?
I didn't, because I know it doesn't work. I wish it did though. Are
you saying that this is a non-problem, and if so, why?
Well, it was never a problem for me, and I wish I'd never have this
one. Is sticking to a single compiler a problem to anyone?
Yes. The absence of an ABI in C++ is a real problem. It means
libraries that come from different vendors wont mix unless the vendor
ships the source. Typically the vendor wont do this so the vendor then
has to make sure his library is compiled with a variety of compilers
with a variety of options (debug/non-debug, reentrant/non-rentrant
etc). He then advertises the different configurations and the
developer wanting to use the library has to hope that his own
configuration is in that list.
If the would-be developer uses an unusual option (e.g there is a weird
option on the solaris compiler that controls the lifetime of
temporaries which I was forced to use once) then the developer will be
out of luck. In fact he will probably have a very bad outcome because
he will pay for a lib that looks like it will do the job then find out
at compile-time, link-time or even runtime that it doesnt work. I have
seen this happen time and time again.
I am suprised when I come across people who have never seen this
problem. I can only presume they just haven't ever had to use many
third-party closed-source libraries.
This subject is covered quite well in the book Imperfect C++, see
http://www.synesis.com.au/publishing/imperfect/cpp. I also wrote an
article about it for the ACCU.
Regards,
Andrew Marlow
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]