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
This commit is contained in:
Jonathan Wakely 2018-06-14 20:02:40 +01:00 committed by Jonathan Wakely
parent d4d4475339
commit 2d26d4ce69
3 changed files with 15 additions and 7 deletions

View File

@ -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.

View File

@ -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

View File

@ -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