[Development] Qt LTS & C++11 plans

Thiago Macieira thiago.macieira at intel.com
Tue Jul 14 03:44:40 CEST 2015


On Wednesday 08 July 2015 13:42:12 Thiago Macieira wrote:
> The only compiler I currently know that will have problems with this is the 
> Intel compiler on OS X when using libc++ older than Subversion r215305.
> Unfortunately, _LIBCPP_VERSION has been at value 1101 since way before that
> change. To restore functionality, I will revert
> 1b961e8b5d508d054e31c0050f27891606714393 after 5.6 branches off from dev.

Upon further investigation, it turns out that ICC has worked around the libc++ 
problem since version 15.0 by providing its own std::atomic implementation 
when __clang__ is defined (probably a mistake and should have been a check for 
_LIBCPP_VERSION).

However, its implementation is broken. I've just reported two bugs against 
version 16.0 beta. One bug can be easily worked around[1] but the other[2] 
isn't easy. I've made sure to report that one as a Critical issue, so let's 
hope there's an update released, fixing the issue, before 5.7 is out.

[1] Issue id 6000117277: std::atomic's constructor is missing "constexpr". 
Note how libc++'s outside of Clang is too 
(https://llvm.org/bugs/show_bug.cgi?id=24114)

[2] Issue id 6000117300: std::atomic<function_pointer> and std::atomic<const 
T*> fail to compile. Can be fixed by a one-line change, casting to (void*). We 
hit both cases in QtCore:

qlogging.cpp: static QBasicAtomicPointer<void (QtMsgType, const char*)> 
msgHandler = Q_BASIC_ATOMIC_INITIALIZER(qDefaultMsgHandler);

qobject_p.h:         QAtomicPointer<const int> argumentTypes;

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Development mailing list