aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2020-02-19 11:37:54 +0000
committerJonathan Wakely <jwakely@redhat.com>2020-02-19 12:46:57 +0000
commitfa89adaa979093936d8f148ef5496db05ad308e5 (patch)
treec1cd0aa1bedd6c17445080b02fe5c2ab7487d846 /libstdc++-v3/include/std
parenta45fb21a10f486f6596b648e2c64bd1c7d808f18 (diff)
downloadgcc-fa89adaa979093936d8f148ef5496db05ad308e5.zip
gcc-fa89adaa979093936d8f148ef5496db05ad308e5.tar.gz
gcc-fa89adaa979093936d8f148ef5496db05ad308e5.tar.bz2
libstdc++: tuple_element_t is also wrong for const subrange (LWG 3398)
* include/std/ranges (tuple_element<0, const subrange<I, S, K>>) (tuple_element<1, const subrange<I, S, K>>): Add partial specializations (LWG 3398). * testsuite/std/ranges/subrange/tuple_like.cc: New test.
Diffstat (limited to 'libstdc++-v3/include/std')
-rw-r--r--libstdc++-v3/include/std/ranges9
1 files changed, 8 insertions, 1 deletions
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index e0eb847..4e50206 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -3193,7 +3193,6 @@ namespace views
typename tuple_size<_Tp>::type;
requires _Nm < tuple_size_v<_Tp>;
typename tuple_element_t<_Nm, _Tp>;
- // XXX: we applied P3323 here
{ std::get<_Nm>(__t) }
-> convertible_to<const tuple_element_t<_Nm, _Tp>&>;
};
@@ -3451,6 +3450,14 @@ namespace views
struct tuple_element<1, ranges::subrange<_Iter, _Sent, _Kind>>
{ using type = _Sent; };
+ template<typename _Iter, typename _Sent, ranges::subrange_kind _Kind>
+ struct tuple_element<0, const ranges::subrange<_Iter, _Sent, _Kind>>
+ { using type = _Iter; };
+
+ template<typename _Iter, typename _Sent, ranges::subrange_kind _Kind>
+ struct tuple_element<1, const ranges::subrange<_Iter, _Sent, _Kind>>
+ { using type = _Sent; };
+
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#endif // library concepts