diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2018-06-14 20:02:40 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2018-06-14 20:02:40 +0100 |
commit | 2d26d4ce69d8510e32a5a4b9653de9dee0109f04 (patch) | |
tree | dad99db5edce9481f0ba1adb5269c5e303f79196 | |
parent | d4d44753398f9b24a622b40c7a1d144a6a6c350c (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/std/tuple | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/std/utility | 10 |
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 |