Fix compilation with ICC on Windows
authorThiago Macieira <thiago.macieira@intel.com>
Fri, 21 Aug 2015 20:58:39 +0000 (13:58 -0700)
committerThiago Macieira <thiago.macieira@intel.com>
Tue, 25 Aug 2015 01:08:42 +0000 (01:08 +0000)
Unlike MSVC, ICC *does* support constexpr, but on Windows it will not
define __GNUC__, so we ended up in the multi-line alternative. That is
not permitted in C++11, only in C++14.

qalgorithms.h(659): error: statement may not appear in a constexpr function

Change-Id: I7de033f80b0e4431b7f1ffff13fc96245ee9a846
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
src/corelib/tools/qalgorithms.h

index 57fbdf0eba4883b935a95f4c5aed7adf1c9d0cb4..ffa3082d5e1cfdc095762c9a4bdd857ee157b867 100755 (executable)
@@ -649,7 +649,7 @@ Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(unsigned long v) Q_D
     return qCountTrailingZeroBits(QIntegerForSizeof<long>::Unsigned(v));
 }
 
-Q_DECL_CONSTEXPR inline uint qCountLeadingZeroBits(quint32 v) Q_DECL_NOTHROW
+Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint32 v) Q_DECL_NOTHROW
 {
 #if defined(Q_CC_GNU)
     return v ? __builtin_clz(v) : 32U;
@@ -664,7 +664,7 @@ Q_DECL_CONSTEXPR inline uint qCountLeadingZeroBits(quint32 v) Q_DECL_NOTHROW
 #endif
 }
 
-Q_DECL_CONSTEXPR inline uint qCountLeadingZeroBits(quint8 v) Q_DECL_NOTHROW
+Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint8 v) Q_DECL_NOTHROW
 {
 #if defined(Q_CC_GNU)
     return v ? __builtin_clz(v)-24U : 8U;
@@ -676,7 +676,7 @@ Q_DECL_CONSTEXPR inline uint qCountLeadingZeroBits(quint8 v) Q_DECL_NOTHROW
 #endif
 }
 
-Q_DECL_CONSTEXPR inline uint qCountLeadingZeroBits(quint16 v) Q_DECL_NOTHROW
+Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint16 v) Q_DECL_NOTHROW
 {
 #if defined(Q_CC_GNU)
     return v ? __builtin_clz(v)-16U : 16U;
@@ -689,7 +689,7 @@ Q_DECL_CONSTEXPR inline uint qCountLeadingZeroBits(quint16 v) Q_DECL_NOTHROW
 #endif
 }
 
-Q_DECL_CONSTEXPR inline uint qCountLeadingZeroBits(quint64 v) Q_DECL_NOTHROW
+Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint64 v) Q_DECL_NOTHROW
 {
 #if defined(Q_CC_GNU)
     return v ? __builtin_clzll(v) : 64U;
@@ -704,7 +704,7 @@ Q_DECL_CONSTEXPR inline uint qCountLeadingZeroBits(quint64 v) Q_DECL_NOTHROW
 #endif
 }
 
-Q_DECL_CONSTEXPR inline uint qCountLeadingZeroBits(unsigned long v) Q_DECL_NOTHROW
+Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(unsigned long v) Q_DECL_NOTHROW
 {
     return qCountLeadingZeroBits(QIntegerForSizeof<long>::Unsigned(v));
 }