diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-02-11 12:38:04 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2023-02-11 12:38:11 +0000 | 
| commit | e3b557809604d036af6e00c60f012c2025b59a5e (patch) | |
| tree | 8a11ba2269a3b669601e2fd41145b174008f4da8 /libcxx/include/__ranges/subrange.h | |
| parent | 08e8dd7b9db7bb4a9de26d44c1cbfd24e869c014 (diff) | |
Diffstat (limited to 'libcxx/include/__ranges/subrange.h')
| -rw-r--r-- | libcxx/include/__ranges/subrange.h | 33 | 
1 files changed, 16 insertions, 17 deletions
| diff --git a/libcxx/include/__ranges/subrange.h b/libcxx/include/__ranges/subrange.h index 7e42da6ce7f9..2d9e4cc7e55e 100644 --- a/libcxx/include/__ranges/subrange.h +++ b/libcxx/include/__ranges/subrange.h @@ -6,6 +6,7 @@  // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception  //  //===----------------------------------------------------------------------===// +  #ifndef _LIBCPP___RANGES_SUBRANGE_H  #define _LIBCPP___RANGES_SUBRANGE_H @@ -16,6 +17,8 @@  #include <__concepts/derived_from.h>  #include <__concepts/different_from.h>  #include <__config> +#include <__fwd/get.h> +#include <__fwd/subrange.h>  #include <__iterator/advance.h>  #include <__iterator/concepts.h>  #include <__iterator/incrementable_traits.h> @@ -26,9 +29,18 @@  #include <__ranges/enable_borrowed_range.h>  #include <__ranges/size.h>  #include <__ranges/view_interface.h> -#include <__tuple> +#include <__tuple_dir/pair_like.h> +#include <__tuple_dir/tuple_element.h> +#include <__tuple_dir/tuple_size.h> +#include <__type_traits/conditional.h> +#include <__type_traits/decay.h> +#include <__type_traits/is_pointer.h> +#include <__type_traits/is_reference.h> +#include <__type_traits/make_unsigned.h> +#include <__type_traits/remove_const.h> +#include <__type_traits/remove_pointer.h>  #include <__utility/move.h> -#include <type_traits> +#include <cstddef>  #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)  #  pragma GCC system_header @@ -36,7 +48,7 @@  _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) +#if _LIBCPP_STD_VER > 17  namespace ranges {    template<class _From, class _To> @@ -49,17 +61,6 @@ namespace ranges {      convertible_to<_From, _To> &&      !__uses_nonqualification_pointer_conversion<decay_t<_From>, decay_t<_To>>; -  template<class _Tp> -  concept __pair_like = -    !is_reference_v<_Tp> && requires(_Tp __t) { -      typename tuple_size<_Tp>::type; // Ensures `tuple_size<T>` is complete. -      requires derived_from<tuple_size<_Tp>, integral_constant<size_t, 2>>; -      typename tuple_element_t<0, remove_const_t<_Tp>>; -      typename tuple_element_t<1, remove_const_t<_Tp>>; -      { std::get<0>(__t) } -> convertible_to<const tuple_element_t<0, _Tp>&>; -      { std::get<1>(__t) } -> convertible_to<const tuple_element_t<1, _Tp>&>; -    }; -    template<class _Pair, class _Iter, class _Sent>    concept __pair_like_convertible_from =      !range<_Pair> && __pair_like<_Pair> && @@ -67,8 +68,6 @@ namespace ranges {      __convertible_to_non_slicing<_Iter, tuple_element_t<0, _Pair>> &&      convertible_to<_Sent, tuple_element_t<1, _Pair>>; -  enum class _LIBCPP_ENUM_VIS subrange_kind : bool { unsized, sized }; -    template<input_or_output_iterator _Iter, sentinel_for<_Iter> _Sent = _Iter,             subrange_kind _Kind = sized_sentinel_for<_Sent, _Iter>               ? subrange_kind::sized @@ -285,7 +284,7 @@ struct tuple_element<1, const ranges::subrange<_Ip, _Sp, _Kp>> {    using type = _Sp;  }; -#endif // _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) +#endif // _LIBCPP_STD_VER > 17  _LIBCPP_END_NAMESPACE_STD | 
