[Development] Fw: Change in qt/qt5[dev]: Updated submodules.

Marc Mutz 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:

   https://codereview.qt-project.org/141999

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[2],int> problem and working around it.

Thanks,
Marc

-- 
Marc Mutz <marc.mutz at kdab.com> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
Tel: +49-30-521325470
KDAB - The Qt Experts



More information about the Development mailing list