Compiler.h: Disable initializer list usage with clang-cl
authorReid Kleckner <reid@kleckner.net>
Thu, 5 Dec 2013 01:03:23 +0000 (01:03 +0000)
committerReid Kleckner <reid@kleckner.net>
Thu, 5 Dec 2013 01:03:23 +0000 (01:03 +0000)
Most people are using MSVC 2012, which lacks the <initializer_list>
header.  MSVC 2013 shipped with that header, but it has not yet been
tested.  If clang works with the 2013 header, then we can enable this by
checking the value of _MSC_VER.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196448 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/Compiler.h

index 860f43e9423e5ad3b692e810d89dff8ad8522095..ea394a40019794803a5f010db415fbcc44dfc9e6 100644 (file)
 #endif
 
 /// \brief Does the compiler support generalized initializers (using braced
-/// lists and std::initializer_list).
-#if __has_feature(cxx_generalized_initializers)
+/// lists and std::initializer_list).  While clang may claim it supports general
+/// initializers, if we're using MSVC's headers, we might not have a usable
+/// std::initializer list type from the STL.  Disable this for now.
+#if __has_feature(cxx_generalized_initializers) && !defined(_MSC_VER)
 #define LLVM_HAS_INITIALIZER_LISTS 1
 #else
 #define LLVM_HAS_INITIALIZER_LISTS 0