[Development] Fw: Change in qt/qt5[dev]: Updated submodules.
marc.mutz at kdab.com
Thu Nov 26 09:53:24 CET 2015
On Wednesday 25 November 2015 20:32:50 Thiago Macieira wrote:
> On Wednesday 25 November 2015 18:27:11 Aleix Pol wrote:
> > > Anyway, if this is a compiler bug, the conditions for triggering it may
> > > not be evident.
> > Does the fact that it's a compiler bug change the fact that it should
> > be changed on the Qt side of things?
> > If we have this compiler on the CI, Qt users will have it as well.
> No, it does not change the fact that we need to either work around or
> remove the change that triggered it. Qt needs to compile with MSVC 2015.
> One way to do that is to disable noexcept for MSVC2015. Another is to
> remove the use of <type_traits>.
We cannot remove the <type_traits> use, because we cannot replace it with the
noexcept operator we used before, because that already failed. We cannot
remove noexcept in general, because it's now part of the API. We can, however,
remove it for just MSVC.
> If the change is to remove noexcept, I'd like to know if Update 1 fixes the
> issue. If it doesn't, it would be a good idea to dissect a testcase and
> submit to Microsoft. It would be the fourth one for Update 1 that we found
> just by compiling Qt with all the C++11 features enabled...
Here's a test case for what I think might be the problem:
The code which triggers this seems to come from a mismatch of QPair<T1,T2> vs.
QPair<S1,S2> where either S1 != T1 or S2 != T2. The error also suggested that
an rvalue is passed as the RHS.
A fix in Qt would therefore be to avoid the T/S mismatch in qtengineio, leaving
users with the same problem, or revoke NOEXCEPT for MSVC. A third option (you
should always have three) is to bring out the template-foo to remove
references, cv-qualifiers and arrays from the type before passing it to
std::declval, similar to what we did before, but recognizing the
QPair<int,int> problem and working around it.
Marc Mutz <marc.mutz at kdab.com> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
KDAB - The Qt Experts
More information about the Development