[Development] Making QScopedPointer scoped (again)

Thiago Macieira thiago.macieira at intel.com
Tue Sep 3 20:17:37 CEST 2013


On terça-feira, 3 de setembro de 2013 19:17:53, Olivier Goffart wrote:
> But because we don't want to use the STL in our ABI, we can't use 
> std::unique_ptr as parameter or return value of our exported functions.
> 
> So we have to duplicate, or we have to reconsider that decision not to use
> the  STL.

There are two issues here:

1) we cannot use any of the C++11 additions to the Standard Library, anywhere

That includes inside .cpp, even if it does not affect the ABI. That's because 
we have no way of properly detecting whether the feature has been added to the 
library in use. At least in Blackberry, the C++ library is a much older 
version than the compiler in use.

The exceptions are std::move, std::forward, and std::initializer_list, mostly 
because they're already in use and because they exist only to complement a 
language feature (respectively, rvalue references; rvalue references and 
variadic templates; uniform initialisation).

And even if you can detect the presence of the feature, you need to make sure 
that Qt still compiles when the feature is absent. That either means having a 
fallback codepath or disabling the Qt feature if the Standard Library feature 
is absent.

2) we cannot use any Standard Library symbol somewhere that affects the ABI
(besides the language support features, like operator new, typeinfos, etc)

That's because we need to support multiple C++ standard libraries that are 
binary incompatible with one binary: libc++ and libstdc++.

While libstdc++ is waning on OS X, libc++ gets more interesting on Linux and 
especially the BSDs.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.qt-project.org/pipermail/development/attachments/20130903/a9c4692e/attachment.sig>


More information about the Development mailing list