Important: Please read the Qt Code of Conduct -

Error while compiling Qt 5.0.2: incorrect "constexpr"-ness of qMax() overload on timeval arguments

  • Hi all,

    While compiling Qt from the 5.0.2 tarball, I get the following error:

    kernel/qtimerinfo_unix.cpp:98:30: error: redeclaration ‘constexpr T qAbs(const T&) [with T = timeval]’ differs in ‘constexpr’
    timeval qAbs(const timeval &t)
    In file included from ../../include/QtCore/qglobal.h:1:0,
    from global/qt_pch.h:58:
    ../../include/QtCore/../../src/corelib/global/qglobal.h:483:27: error: from previous declaration ‘constexpr T qAbs(const T&) [with T = timeval]’
    Q_DECL_CONSTEXPR inline T qAbs(const T &t) { return t >= 0 ? t : -t; }
    kernel/qtimerinfo_unix.cpp: In function ‘constexpr T qAbs(const T&) [with T = timeval]’:
    kernel/qtimerinfo_unix.cpp:109:1: error: body of constexpr function ‘constexpr T qAbs(const T&) [with T = timeval]’ not a return-statement

    (............. plus a lot more ...............)

    Investigating the issue does indeed show a template specialization on qMax<timeval> that does not have the "constexpr" attribute, while the generic qMax<T> does.

    I am using g++ 4.8.2 on Debian/testing.

    Is there any easy way I can fix this? I already tried to remove the constexpr declaration on qMax<T> but the problem cascades to functions that use that.

    Any help is appreciated.


Log in to reply