From 4661094069c52581fda8e3ae6493131df7d0b1e8 Mon Sep 17 00:00:00 2001
From: Jonathan Wakely <jwakely@redhat.com>
Date: Wed, 6 Mar 2019 15:31:06 +0000
Subject: [PATCH] Add feature test macro for bounded array traits

	* include/std/type_traits (__cpp_lib_bounded_array_traits): Define.
	* include/std/version (__cpp_lib_bounded_array_traits): Likewise.
	* testsuite/20_util/is_bounded_array/value.cc: Check for macro.
	* testsuite/20_util/is_unbounded_array/value.cc: Likewise.

From-SVN: r269426
---
 libstdc++-v3/ChangeLog                                     | 7 +++++++
 libstdc++-v3/include/std/type_traits                       | 2 ++
 libstdc++-v3/include/std/version                           | 1 +
 libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc   | 6 ++++++
 libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc | 6 ++++++
 5 files changed, 22 insertions(+)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 4cbdc80aa08d..2559fa3c1ecd 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+2019-03-06  Jonathan Wakely  <jwakely@redhat.com>
+
+	* include/std/type_traits (__cpp_lib_bounded_array_traits): Define.
+	* include/std/version (__cpp_lib_bounded_array_traits): Likewise.
+	* testsuite/20_util/is_bounded_array/value.cc: Check for macro.
+	* testsuite/20_util/is_unbounded_array/value.cc: Likewise.
+
 2019-03-06  Edward Smith-Rowland  <3dw4rd@verizon.net>
 
 	PR libstdc++/86655 - std::assoc_legendre should not constrain
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits
index a1161d503993..c3cb67a457db 100644
--- a/libstdc++-v3/include/std/type_traits
+++ b/libstdc++-v3/include/std/type_traits
@@ -3074,6 +3074,8 @@ template <typename _From, typename _To>
   template<typename _Tp>
     using unwrap_ref_decay_t = typename unwrap_ref_decay<_Tp>::type;
 
+#define __cpp_lib_bounded_array_traits 201902L
+
   /// True for a type that is an array of known bound.
   template<typename _Tp>
     struct is_bounded_array
diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version
index 785e8966dbfc..668b477e24df 100644
--- a/libstdc++-v3/include/std/version
+++ b/libstdc++-v3/include/std/version
@@ -148,6 +148,7 @@
 
 #if __cplusplus > 201703L
 // c++2a
+#define __cpp_lib_bounded_array_traits 201902L
 #if __cpp_impl_destroying_delete
 # define __cpp_lib_destroying_delete 201806L
 #endif
diff --git a/libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc b/libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc
index 9f37d36e5321..47ecae8ca05d 100644
--- a/libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc
@@ -21,6 +21,12 @@
 #include <type_traits>
 #include <testsuite_tr1.h>
 
+#ifndef __cpp_lib_bounded_array_traits
+# error "Feature test macro for is_bounded_array is missing"
+#elif __cpp_lib_bounded_array_traits < 201902L
+# error "Feature test macro for is_bounded_array has wrong value"
+#endif
+
 void test01()
 {
   using std::is_bounded_array;
diff --git a/libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc b/libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc
index 28a77b21da21..19fb0524cd85 100644
--- a/libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc
+++ b/libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc
@@ -21,6 +21,12 @@
 #include <type_traits>
 #include <testsuite_tr1.h>
 
+#ifndef __cpp_lib_bounded_array_traits
+# error "Feature test macro for is_unbounded_array is missing"
+#elif __cpp_lib_bounded_array_traits < 201902L
+# error "Feature test macro for is_unbounded_array has wrong value"
+#endif
+
 void test01()
 {
   using std::is_unbounded_array;
-- 
GitLab