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>
# define Q_CC_INTEL
# endif
# 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()
/* 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()
-#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_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
# define Q_COMPILER_STATIC_ASSERT
// MSVC has std::initilizer_list, but does not support the braces initialization
//# define Q_COMPILER_INITIALIZER_LISTS
+# endif
+#endif /* Q_CC_MSVC */
#ifdef __cplusplus
# if defined(Q_OS_BLACKBERRY) || defined(Q_OS_QNX)
#ifdef __cplusplus
# if defined(Q_OS_BLACKBERRY) || defined(Q_OS_QNX)