On Tuesday, 23 de August de 2011 13:00:51 Konstantin Tokarev wrote:
> 23.08.2011, 12:58, "Thiago Macieira" <thi...@kde.org>:
> > And the other requirement is that QT_STL be binary compatible with
> > QT_NO_STL.
> Could you explain why this requirement is needed?

I think I could ask back: why not require it?

It's not difficult to have Qt be binary compatible in those two versions. All 
it 
requires is that the Qt non-inline API never have anything that is disabled by 
QT_NO_STL. That means all functions must be present if that is defined, which 
in turn means no function can carry a non-inline STL type in their signature.

Tag types might be permitted, but in most cases tags exist for template and 
inline code, so I don't think it's a problem.

The reason I personally want this is that I'd like to compile Qt without 
#include'ing the STL headers everywhere. Nothing wrong with them -- they're 
just non-trivial in size, meaning the compilation time is bigger. For someone 
who needs to compile Qt several times a day and no longer has access to a nice 
compile farm, this could come in very handy.

Moreover, imagine an embedded device that wants to save space in the minimal 
base system: they could choose to compile Qt and all of their applications 
without STL, thus saving a few hundred kilobytes of libstdc++. But user 
applications could still use STL if they wanted and interoperate with Qt, only 
triggering the install of that lib.

Finally, I've been reading the C++ ABI mailing list and there are several 
teams there, from different compilers. They are cooperating to make the same 
ABI between their compilers. That doesn't mean, however, that one compiler's 
STL implementation works on another.

So a hypothetical scenario is that a device maker chooses to use a different 
compiler for the base system, like RVCT for ARM devices, than the free 
compiler that is offered to third-party users in the SDKs (normally GCC). The 
STL implementations are incompatible, so they build the base system without 
STL support, but GCC-built 3rd-party applications can use STL and interoperate 
with Qt.

-- 
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
   Software Architect - Intel Open Source Technology Center
      PGP/GPG: 0x6EF45358; fingerprint:
      E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Qt5-feedback mailing list
Qt5-feedback@qt.nokia.com
http://lists.qt.nokia.com/mailman/listinfo/qt5-feedback

Reply via email to