qcompilerdetection.h: stream-line MSVC feature detection
authorMarc Mutz <marc.mutz@kdab.com>
Tue, 10 Jul 2012 12:36:13 +0000 (14:36 +0200)
committerQt by Nokia <qt-info@nokia.com>
Sun, 26 Aug 2012 12:29:48 +0000 (14:29 +0200)
Reformat the MSVC feature detection to be similar to other compilers, ie.

1. Inside the C++11 features section instead of where the compilers
   are detected
2. In one block for the compiler, with sub-blocks for the version.

However, it's now not 100% compatible with the previous version,
since Q_CC_INTEL is now explicitly excluded while before it was
implicitly included in the MSVC case. I have no idea whether
that matters, since Q_CC_INTEL is handled for itself further up
already.

Change-Id: Id9e8da0a5394ad5643bcb29493f14bc6e8264c13
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
src/corelib/global/qcompilerdetection.h

index 43f4439..2faa6bf 100644 (file)
 #    define Q_CC_INTEL
 #  endif
 
-#  if defined(Q_CC_MSVC) && _MSC_VER >= 1400
-#    define Q_COMPILER_VARIADIC_MACROS
-#  endif
-
 /* only defined for MSVC since that's the only compiler that actually optimizes for this */
 /* might get overridden further down when Q_COMPILER_NOEXCEPT is detected */
 #  define Q_DECL_NOTHROW  throw()
 #  endif
 #endif
 
-#if defined(Q_CC_MSVC) && _MSC_VER >= 1600 && !defined(Q_CC_INTEL)
+#if defined(Q_CC_MSVC) && !defined(Q_CC_INTEL)
+#    if _MSC_VER >= 1400
+       /* C++11 features supported in VC8 = VC2005: */
+#      define Q_COMPILER_VARIADIC_MACROS
+#    endif
+#    if _MSC_VER >= 1600
+       /* C++11 features supported in VC10 = VC2010: */
 #      define Q_COMPILER_AUTO_TYPE
 #      define Q_COMPILER_LAMBDA
 #      define Q_COMPILER_DECLTYPE
 #      define Q_COMPILER_STATIC_ASSERT
 //  MSVC has std::initilizer_list, but does not support the braces initialization
 //#      define Q_COMPILER_INITIALIZER_LISTS
-#endif
+#    endif
+#endif /* Q_CC_MSVC */
 
 #ifdef __cplusplus
 # if defined(Q_OS_BLACKBERRY) || defined(Q_OS_QNX)