[Development] Platform / compiler support

Thiago Macieira thiago.macieira at intel.com
Wed Nov 9 11:32:31 CET 2011


On Wednesday, 9 de November de 2011 10:45:42 Olivier Goffart wrote:
> Also, it would be nice to have a wiki page listing which the features not
> supported by which compilers. (we use to have that in the very old trolltech
> wiki) Also, this should be reflected in qglobal.h (which deserve a cleanup)

+1

> (In qglobal.h, yhere is still stuff like Q_NO_DECLARED_NOT_DEFINED,
> Q_NO_USING_KEYWORD, Q_NO_EXPLICIT_KEYWORD, Q_NO_BOOL_TYPE,
> Q_FULL_TEMPLATE_INSTANTIATION, Q_BROKEN_DEBUG_STREAM,
> Q_BROKEN_TEMPLATE_SPECIALIZATION, Q_NO_TEMPLATE_FRIENDS, ...
> Which of them are still required? Which of them do one remember the
> meaning?)

Hopefully we can get rid of these:

Q_NO_DECLARED_NOT_DEFINED - no clue what this is
Q_NO_USING_KEYWORD - Symantec C++, Digital Mars, Borland C++, Comeau, others
Q_NO_EXPLICIT_KEYWORD - Symantec C++, Digital Mars, Borland C++
Q_NO_BOOL_TYPE - Borland C++, Compaq C++ 6, Q_CC_DIAB
Q_BROKEN_DEBUG_STREAM - Apple's gcc 3.1 - 3.3
Q_BROKEN_TEMPLATE_SPECIALIZATION - xlC 4, old EDG compilers
Q_FULL_TEMPLATE_INSTANTIATION - gcc 2.95
Q_NO_STL_WCHAR - gcc 2.95
Q__NO_PACKED_REFERENCE - was broken code I guess
Q_TYPENAME - xlC 4

The member-template and partial-specialisation macros are gone already. We 
should also remove all those compilers above that aren't tested by anyone 
anymore.

These need more investigation as they are probably still enabled for current 
compilers. My guess is they can be gone too.

Q_NO_DEPRECATED_CONSTRUCTORS - gcc on __APPLE__
Q_CANNOT_DELETE_CONSTANT - xlC 4, MSVC
QT_NO_TEMPLATE_TEMPLATE_PARAMETERS - only enabled for Sun CC currently, but 
I'm told 5.10 has them

This is currently the only we need to keep:

Q_NO_TEMPLATE_FRIENDS - GCC only for now, but the code says Sun CC 5.10 has it

Then there are all the C++11 features, but they are Q_COMPILER_*

> My point is that it should be known why do don't use a feature of the C++
> language, but also which feature need not to be used or only within #ifdef.
> And if there is no reference telling us that, how are developper supposed to
> know?

Well, we currently have one certain macro for C++98 features, one potential 
(TTPs), then we have C++03 and TR1 features, C++11 and extensions (like C99 
support).

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
     Intel Sweden AB - Registration Number: 556189-6027
     Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden
-------------- 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/20111109/c5b54588/attachment.sig>


More information about the Development mailing list