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:
parent
d4d4475339
commit
2d26d4ce69
@ -1,5 +1,10 @@
|
|||||||
2018-06-14 Jonathan Wakely <jwakely@redhat.com>
|
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
|
P0935R0 Eradicating unnecessarily explicit default constructors
|
||||||
* include/backward/strstream (strstreambuf): Add non-explicit default
|
* include/backward/strstream (strstreambuf): Add non-explicit default
|
||||||
constructor.
|
constructor.
|
||||||
|
@ -1298,13 +1298,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||||||
"tuple index is in range");
|
"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>
|
template<std::size_t __i, typename _Head, typename... _Tail>
|
||||||
constexpr _Head&
|
constexpr _Head&
|
||||||
__get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
|
__get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
|
||||||
|
@ -135,6 +135,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||||||
typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type;
|
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.
|
// Various functions which give std::pair a tuple-like interface.
|
||||||
|
|
||||||
/// Partial specialization for std::pair
|
/// Partial specialization for std::pair
|
||||||
|
Loading…
Reference in New Issue
Block a user