[Interest] [Mingw-w64-public] Compiling Qt (4 or 5) with "-std=c++11"

K. Frank kfrank29.c at gmail.com
Thu Mar 21 22:53:22 CET 2013


Hello Ruben!

On Thu, Mar 21, 2013 at 5:37 PM, Ruben Van Boxem
<vanboxem.ruben at gmail.com> wrote:
>
> Op 21 mrt. 2013 22:31 schreef "K. Frank" <kfrank29.c at gmail.com> het
> volgende:
>
>> Hi Thiago!
>> ...
>> On Thu, Mar 21, 2013 at 5:07 PM, Thiago Macieira
>> <thiago.macieira at intel.com> wrote:
>> > On quinta-feira, 21 de março de 2013 16.52.29, K. Frank wrote:
>> >> Hello Lists!
>> > ...
>> >> As I understand it, using "-std=c++11" causes abi breakage, so to do
>> >> this, I
>> >> will have to recompile the various libraries I use.
>> >
>> > Not with Qt. Qt has the very same ABI, whether you compile it with C++11
>> > or
>> > C++98.
>>
>> I guess I should take your word for it.  But I'm a little confused, so let
>> me
>> ask for some clarification.  How does Qt control the abi produced by the
>> compiler?  I was under the distinct impression that "-std=???11" caused
>> significant abi breakage, that this was recognized as an issue, but, I
>> guess, that the gcc folks felt that it was worth it for some reason.
>>
>> How could Qt manage to dodge that bullet?  Or am I misunderstanding
>> the issue?
>
> Different ABI is only problematic if you pass e.g. std::string objects
> across different module ABI boundaries. I suppose Qt avoids using the
> standard library as it provides its own implementations of most if not all
> standard library functionality.

Thank you Ruben, that sounds like the explanation.  Now that I think
about it, I seem to recall the abi breakage being associated with the
standard library.  Certainly having std:;string not work would be
considered pervasive and severe breakage.  But, as you point out, Qt
uses very little (if any) of the template part of the standard library, so
I guess it's a non-issue.

>
> Ruben

Thanks for the clarification.


K. Frank



More information about the Interest mailing list