Enable deleted functions and explicit conversions in MSVC 2013

Also prospectively enable static_assert as the documentation suggests it's been
available since MSVC 2010. Let's see if the build servers agree.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198142 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alp Toker 2013-12-29 00:49:14 +00:00
parent ee44e9559f
commit 6f93d65e02

View File

@ -136,8 +136,7 @@
/// ... /// ...
/// }; /// };
#if (__has_feature(cxx_deleted_functions) \ #if (__has_feature(cxx_deleted_functions) \
|| defined(__GXX_EXPERIMENTAL_CXX0X__)) || defined(__GXX_EXPERIMENTAL_CXX0X__)) || LLVM_MSC_PREREQ(1800)
// No version of MSVC currently supports this.
#define LLVM_DELETED_FUNCTION = delete #define LLVM_DELETED_FUNCTION = delete
#else #else
#define LLVM_DELETED_FUNCTION #define LLVM_DELETED_FUNCTION
@ -379,7 +378,7 @@
/// \brief Expands to explicit on compilers which support explicit conversion /// \brief Expands to explicit on compilers which support explicit conversion
/// operators. Otherwise expands to nothing. /// operators. Otherwise expands to nothing.
#if (__has_feature(cxx_explicit_conversions) \ #if (__has_feature(cxx_explicit_conversions) \
|| defined(__GXX_EXPERIMENTAL_CXX0X__)) || defined(__GXX_EXPERIMENTAL_CXX0X__)) || LLVM_MSC_PREREQ(1800)
#define LLVM_EXPLICIT explicit #define LLVM_EXPLICIT explicit
#else #else
#define LLVM_EXPLICIT #define LLVM_EXPLICIT
@ -387,7 +386,7 @@
/// \macro LLVM_STATIC_ASSERT /// \macro LLVM_STATIC_ASSERT
/// \brief Expands to C/C++'s static_assert on compilers which support it. /// \brief Expands to C/C++'s static_assert on compilers which support it.
#if __has_feature(cxx_static_assert) #if __has_feature(cxx_static_assert) || LLVM_MSC_PREREQ(1600)
# define LLVM_STATIC_ASSERT(expr, msg) static_assert(expr, msg) # define LLVM_STATIC_ASSERT(expr, msg) static_assert(expr, msg)
#elif __has_feature(c_static_assert) #elif __has_feature(c_static_assert)
# define LLVM_STATIC_ASSERT(expr, msg) _Static_assert(expr, msg) # define LLVM_STATIC_ASSERT(expr, msg) _Static_assert(expr, msg)