8#ifndef INCLUDED_BSLSTL_RANGES
9#define INCLUDED_BSLSTL_RANGES
54#include <bslstl_iterator.h>
62#ifdef BSLS_LIBRARYFEATURES_HAS_CPP20_RANGES
64#if !defined(BSLS_LIBRARYFEATURES_STDCPP_LLVM) || _LIBCPP_VERSION > 179999
65 #define BSL_RANGES_HAS_JOIN_VIEW 1
90 using std::ranges::iterator_t;
91 using std::ranges::sentinel_t;
92 using std::ranges::range_size_t;
93 using std::ranges::range_difference_t;
94 using std::ranges::range_value_t;
95 using std::ranges::range_reference_t;
96 using std::ranges::range_rvalue_reference_t;
103 using std::ranges::range;
104 using std::ranges::borrowed_range;
105 using std::ranges::enable_borrowed_range;
106 using std::ranges::sized_range;
107 using std::ranges::disable_sized_range;
108 using std::ranges::view;
109 using std::ranges::enable_view;
110 using std::ranges::view_base;
112 using std::ranges::input_range;
113 using std::ranges::output_range;
114 using std::ranges::forward_range;
115 using std::ranges::bidirectional_range;
116 using std::ranges::random_access_range;
117 using std::ranges::contiguous_range;
118 using std::ranges::common_range;
119 using std::ranges::viewable_range;
122 using std::ranges::view_interface;
123 using std::ranges::subrange;
126 using std::ranges::dangling;
127 using std::ranges::borrowed_iterator_t;
128 using std::ranges::borrowed_subrange_t;
131 using std::ranges::empty_view;
132 using std::ranges::single_view;
133 using std::ranges::iota_view;
134 using std::ranges::basic_istream_view;
135 using std::ranges::istream_view;
136 using std::ranges::wistream_view;
140 using std::ranges::views::empty;
141 using std::ranges::views::single;
142 using std::ranges::views::iota;
143 using std::ranges::views::istream;
148 using std::ranges::ref_view;
149 using std::ranges::owning_view;
150 using std::ranges::filter_view;
151 using std::ranges::transform_view;
152 using std::ranges::take_view;
153 using std::ranges::take_while_view;
154 using std::ranges::drop_view;
155 using std::ranges::drop_while_view;
156#if BSL_RANGES_HAS_JOIN_VIEW
157 using std::ranges::join_view;
159 using std::ranges::lazy_split_view;
160 using std::ranges::split_view;
161 using std::ranges::common_view;
162 using std::ranges::reverse_view;
163 using std::ranges::elements_view;
164 using std::ranges::keys_view;
165 using std::ranges::values_view;
169 using std::ranges::views::all_t;
170 using std::ranges::views::all;
171 using std::ranges::views::counted;
172 using std::ranges::views::filter;
173 using std::ranges::views::transform;
174 using std::ranges::views::take;
175 using std::ranges::views::take_while;
176 using std::ranges::views::drop;
177 using std::ranges::views::drop_while;
178#if BSL_RANGES_HAS_JOIN_VIEW
179 using std::ranges::views::join;
181 using std::ranges::views::lazy_split;
182 using std::ranges::views::split;
183 using std::ranges::views::common;
184 using std::ranges::views::reverse;
185 using std::ranges::views::elements;
186 using std::ranges::views::keys;
187 using std::ranges::views::values;
192 using std::ranges::subrange_kind;
194#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_BASELINE_LIBRARY
195 using std::ranges::as_rvalue_view;
196 using std::ranges::chunk_by_view;
197 using std::ranges::repeat_view;
199 using std::views::as_rvalue;
200 using std::views::chunk_by;
201 using std::views::repeat;
205#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_TO_CONTAINER
206 using std::ranges::to;
209#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGE_ADAPTOR_CLOSURE
210 using std::ranges::range_adaptor_closure;
213#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_AS_CONST
214 using std::ranges::const_iterator_t;
215 using std::ranges::const_sentinel_t;
216 using std::ranges::range_const_reference_t;
217 using std::ranges::constant_range;
218 using std::ranges::as_const_view;
220 using std::views::as_const;
224#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_CARTESIAN_PRODUCT
225 using std::ranges::cartesian_product_view;
227 using std::views::cartesian_product;
231#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_CHUNK
232 using std::ranges::chunk_view;
234 using std::views::chunk;
238#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_ENUMERATE
239 using std::ranges::enumerate_view;
241 using std::views::enumerate;
245#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_JOIN_WITH
246 using std::ranges::join_with_view;
248 using std::views::join_with;
252#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_SLIDE
253 using std::ranges::slide_view;
255 using std::views::slide;
259#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_STRIDE
260 using std::ranges::stride_view;
262 using std::views::stride;
266#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_RANGES_ZIP
267 using std::ranges::adjacent_view;
268 using std::ranges::adjacent_transform_view;
269 using std::ranges::zip_view;
270 using std::ranges::zip_transform_view;
272 using std::views::adjacent;
273 using std::views::adjacent_transform;
274 using std::views::zip;
275 using std::views::zip_transform;
279#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_GENERATOR
280 template<ranges::range R,
class Alloc = bsl::allocator<>>
281 using elements_of = std::ranges::elements_of<R, Alloc>;
286#ifdef BSLS_LIBRARYFEATURES_HAS_CPP23_CONTAINERS_RANGES
287using std::from_range;
288using std::from_range_t;
292 namespace views = ranges::views;
298#ifndef BSLS_LIBRARYFEATURES_HAS_CPP23_CONTAINERS_RANGES
302#ifdef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
307#ifdef BSLS_COMPILERFEATURES_SUPPORT_INLINE_VARIABLES
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdlat_valuetypefunctions.h:939
const from_range_t from_range
Definition bslstl_ranges.h:301