diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2020-02-19 11:37:54 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2020-02-19 12:46:57 +0000 |
commit | fa89adaa979093936d8f148ef5496db05ad308e5 (patch) | |
tree | c1cd0aa1bedd6c17445080b02fe5c2ab7487d846 /libstdc++-v3/include/std | |
parent | a45fb21a10f486f6596b648e2c64bd1c7d808f18 (diff) | |
download | gcc-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/ranges | 9 |
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 |