From c2d590c9571f5c40d3391ce2892156f9d4af3c53 Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Tue, 21 Jul 2015 12:56:47 -0400
Subject: [PATCH] Features: Update MSVC features for VS 2015 RTM

VS 2015 RTM completed support for constexpr and attribute features.
Update our feature table and test accordingly.
---
 Modules/Compiler/MSVC-CXX-FeatureTests.cmake | 10 +++++-----
 Tests/CompileFeatures/CMakeLists.txt         |  6 ------
 2 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/Modules/Compiler/MSVC-CXX-FeatureTests.cmake b/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
index fcedf3cd8e..ad1d14bd0b 100644
--- a/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
+++ b/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
@@ -3,6 +3,8 @@
 # http://blogs.msdn.com/b/vcblog/archive/2013/06/28/c-11-14-stl-features-fixes-and-breaking-changes-in-vs-2013.aspx
 # http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
 # http://www.visualstudio.com/en-us/news/vs2015-preview-vs.aspx
+# http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015-rc.aspx
+# http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx
 
 
 set(_cmake_oldestSupported "_MSC_VER >= 1600")
@@ -10,10 +12,11 @@ set(_cmake_oldestSupported "_MSC_VER >= 1600")
 set(MSVC_2015 "_MSC_VER >= 1900")
 set(_cmake_feature_test_cxx_alignas "${MSVC_2015}")
 set(_cmake_feature_test_cxx_alignof "${MSVC_2015}")
+set(_cmake_feature_test_cxx_attributes "${MSVC_2015}")
+set(_cmake_feature_test_cxx_attribute_deprecated "${MSVC_2015}")
 set(_cmake_feature_test_cxx_binary_literals "${MSVC_2015}")
+set(_cmake_feature_test_cxx_constexpr "${MSVC_2015}")
 set(_cmake_feature_test_cxx_decltype_auto "${MSVC_2015}")
-# Digit separators are not available as of VS 2015 Preview, but a footnote
-# says they will be available in the RTM.
 set(_cmake_feature_test_cxx_digit_separators "${MSVC_2015}")
 set(_cmake_feature_test_cxx_func_identifier "${MSVC_2015}")
 set(_cmake_feature_test_cxx_nonstatic_member_init "${MSVC_2015}")
@@ -89,10 +92,7 @@ set(_cmake_feature_test_cxx_trailing_return_types "${MSVC_2010}")
 set(_cmake_feature_test_cxx_variadic_macros "${MSVC_2010}")
 
 # Currently unsupported:
-# set(_cmake_feature_test_cxx_constexpr )
 # set(_cmake_feature_test_cxx_relaxed_constexpr )
-# set(_cmake_feature_test_cxx_attributes )
-# set(_cmake_feature_test_cxx_attribute_deprecated )
 # 'NSDMIs for aggregates'
 # set(_cmake_feature_test_cxx_aggregate_default_initializers )
 # set(_cmake_feature_test_cxx_variable_templates )
diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt
index 3ba1e0a55c..a32138d71b 100644
--- a/Tests/CompileFeatures/CMakeLists.txt
+++ b/Tests/CompileFeatures/CMakeLists.txt
@@ -116,12 +116,6 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
       cxx_deleted_functions
       cxx_nonstatic_member_init
       )
-  else()
-    list(REMOVE_ITEM CXX_non_features
-      # The cxx_constexpr feature happens to work (for *this* testcase)
-      # with VS 2015, but they document only partial support.
-      cxx_constexpr
-      )
   endif()
 endif()
 
-- 
GitLab