[Development] QtCS: Notes from Modern C++ session
Thiago Macieira
thiago.macieira at intel.com
Mon Jun 15 17:33:35 CEST 2015
On Monday 15 June 2015 17:24:39 Marc Mutz wrote:
> Qt's binary compatibility is between Qt versions, not between toolchains,
> and as such, I don't see a problem saying that if you change the toolchain
> (STL (version)), then the BC guarantees are voided. That's just what we
> have now already.
I disagree. I understand what you said, but right now it is possible to switch
from libstdc++ to libc++ with no ill effects[*]. So the question is should be
asked the other way around: do we knowingly remove this currently-working
ability?
[*] provided, of course, that the two share their base C++ ABI, which some
Linux distros have not yet learned to do.
> IoW: Before we continue to ban STL types from the API because of BC
> reasons, we first need to fix the problem with mixed debug/release builds
> on Windows (e.g. by stuffing every heap-allocated object that isn't born
> and dies in the same library, into a shared_ptr, whose custom deleter takes
> care of calling the right delete version). OTOH, if we're not fixing that
> issue, there's no point in banning STL types from the API, at least not
> with the BC argument.
That's a self-inflicted problem of MSVC. Whoever chooses to use MSVC is
therefore choosing to live with the problems that MSVC has. MinGW has no such
issues.
And the two things are not at all the same. In one, there's a feature from
libc++ that we are currently making use of. In the other, there's an MSVC
defect that we are not currently working around.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Development
mailing list