aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2018-06-14 20:02:40 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2018-06-14 20:02:40 +0100
commit2d26d4ce69d8510e32a5a4b9653de9dee0109f04 (patch)
treedad99db5edce9481f0ba1adb5269c5e303f79196
parentd4d44753398f9b24a622b40c7a1d144a6a6c350c (diff)
downloadgcc-2d26d4ce69d8510e32a5a4b9653de9dee0109f04.zip
gcc-2d26d4ce69d8510e32a5a4b9653de9dee0109f04.tar.gz
gcc-2d26d4ce69d8510e32a5a4b9653de9dee0109f04.tar.bz2
Partially revert move of std::tuple_element_t to <tuple>
Defining std::tuple_element_t in <utility> makes it available wherever std::tuple_element is available. * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t): Move back to <utility>. * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t): Restore to here. From-SVN: r261604
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/std/tuple7
-rw-r--r--libstdc++-v3/include/std/utility10
3 files changed, 15 insertions, 7 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 94541d1..2bfda08 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,10 @@
2018-06-14 Jonathan Wakely <jwakely@redhat.com>
+ * include/std/tuple (__cpp_lib_tuple_element_t, tuple_element_t):
+ Move back to <utility>.
+ * include/std/utility (__cpp_lib_tuple_element_t. tuple_element_t):
+ Restore to here.
+
P0935R0 Eradicating unnecessarily explicit default constructors
* include/backward/strstream (strstreambuf): Add non-explicit default
constructor.
diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index 0f89050..dd7daf7 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -1298,13 +1298,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
"tuple index is in range");
};
-#if __cplusplus >= 201402L
-#define __cpp_lib_tuple_element_t 201402L
-
- template<size_t __i, typename _Tp>
- using tuple_element_t = typename tuple_element<__i, _Tp>::type;
-#endif
-
template<std::size_t __i, typename _Head, typename... _Tail>
constexpr _Head&
__get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
diff --git a/libstdc++-v3/include/std/utility b/libstdc++-v3/include/std/utility
index 7bf80de..17e7d4c 100644
--- a/libstdc++-v3/include/std/utility
+++ b/libstdc++-v3/include/std/utility
@@ -135,6 +135,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type;
};
+#if __cplusplus >= 201402L
+// The standard says this macro and alias template should be in <tuple>
+// but we define them here, to be available when the partial specializations
+// of tuple_element<pair<T,U>> and tuple_element<array<T,N>> are defined.
+#define __cpp_lib_tuple_element_t 201402L
+
+ template<std::size_t __i, typename _Tp>
+ using tuple_element_t = typename tuple_element<__i, _Tp>::type;
+#endif
+
// Various functions which give std::pair a tuple-like interface.
/// Partial specialization for std::pair