From c2513a1f6d7817d96cb125125ed0cf96d37f4669 Mon Sep 17 00:00:00 2001
From: Jonathan Wakely <jwakely@redhat.com>
Date: Wed, 29 Oct 2014 18:22:05 +0000
Subject: [PATCH] any: Add feature-testing macro.

	* include/experimental/any: Add feature-testing macro.
	* include/experimental/optional: Likewise.
	* include/experimental/string_view: Likewise.
	* include/experimental/tuple: Likewise.
	* include/experimental/type_traits: Likewise.
	* testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.

From-SVN: r216848
---
 libstdc++-v3/ChangeLog                                     | 7 +++++++
 libstdc++-v3/include/experimental/any                      | 2 ++
 libstdc++-v3/include/experimental/optional                 | 2 ++
 libstdc++-v3/include/experimental/string_view              | 2 ++
 libstdc++-v3/include/experimental/tuple                    | 3 +++
 libstdc++-v3/include/experimental/type_traits              | 2 ++
 .../testsuite/experimental/any/misc/any_cast_neg.cc        | 2 +-
 7 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 78ffe5ec764c..e513ac7a5d5b 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -12,6 +12,13 @@
 	* testsuite/experimental/functional/value.cc: New.
 	* testsuite/experimental/feat-lib-fund.cc: Add headers and reorder.
 
+	* include/experimental/any: Add feature-testing macro.
+	* include/experimental/optional: Likewise.
+	* include/experimental/string_view: Likewise.
+	* include/experimental/tuple: Likewise.
+	* include/experimental/type_traits: Likewise.
+	* testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error.
+
 2014-10-25  François Dumont  <fdumont@gcc.gnu.org>
 
 	* doc/xml/manual/status_cxx2011.xml: Update unordered container
diff --git a/libstdc++-v3/include/experimental/any b/libstdc++-v3/include/experimental/any
index a4ac983d711e..1de467c1254c 100644
--- a/libstdc++-v3/include/experimental/any
+++ b/libstdc++-v3/include/experimental/any
@@ -60,6 +60,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    * @{
    */
 
+#define __cpp_lib_experimental_any 201402
+
   /**
    *  @brief Exception class thrown by a failed @c any_cast
    *  @ingroup exceptions
diff --git a/libstdc++-v3/include/experimental/optional b/libstdc++-v3/include/experimental/optional
index c68d7ea3808a..973775bd9255 100644
--- a/libstdc++-v3/include/experimental/optional
+++ b/libstdc++-v3/include/experimental/optional
@@ -67,6 +67,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    * @{
    */
 
+#define __cpp_lib_experimental_optional 201406
+
   // All subsequent [X.Y.n] references are against n3793.
 
   // [X.Y.4]
diff --git a/libstdc++-v3/include/experimental/string_view b/libstdc++-v3/include/experimental/string_view
index 041f7489deb0..320d72db3216 100644
--- a/libstdc++-v3/include/experimental/string_view
+++ b/libstdc++-v3/include/experimental/string_view
@@ -50,6 +50,8 @@ inline namespace fundamentals_v1
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
+#define __cpp_lib_experimental_string_view 201402
+
   /**
    *  @class basic_string_view <experimental/string_view>
    *  @brief  A non-owning reference to a string.
diff --git a/libstdc++-v3/include/experimental/tuple b/libstdc++-v3/include/experimental/tuple
index da756b854983..5cf02d38256d 100644
--- a/libstdc++-v3/include/experimental/tuple
+++ b/libstdc++-v3/include/experimental/tuple
@@ -44,10 +44,13 @@ namespace experimental
 inline namespace fundamentals_v1
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
   // See C++14 §20.4.2.5, tuple helper classes
   template <typename _Tp>
     constexpr size_t tuple_size_v = tuple_size<_Tp>::value;
 
+#define __cpp_lib_experimental_tuple 201402
+
   template <typename _Fn, typename _Tuple, std::size_t... _Idx>
     constexpr decltype(auto)
     __apply_impl(_Fn&& f, _Tuple&& t, std::index_sequence<_Idx...>)
diff --git a/libstdc++-v3/include/experimental/type_traits b/libstdc++-v3/include/experimental/type_traits
index 93dd8ce39459..72aadbe6a25e 100644
--- a/libstdc++-v3/include/experimental/type_traits
+++ b/libstdc++-v3/include/experimental/type_traits
@@ -50,6 +50,8 @@ inline namespace fundamentals_v1
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
+#define __cpp_lib_experimental_type_trait_variable_templates 201402
+
 // See C++14 §20.10.4.1, primary type categories
 template <typename _Tp>
   constexpr bool is_void_v = is_void<_Tp>::value;
diff --git a/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc b/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
index 9a12ec376243..9ef7194a1da1 100644
--- a/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
+++ b/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
@@ -26,5 +26,5 @@ void test01()
   using std::experimental::any_cast;
 
   const any y(1);
-  any_cast<int&>(y); // { dg-error "qualifiers" "" { target { *-*-* } } 380 }
+  any_cast<int&>(y); // { dg-error "qualifiers" "" { target { *-*-* } } 382 }
 }
-- 
GitLab