|
1279 | 1279 | \begin{codeblock}
|
1280 | 1280 | namespace std::ranges {
|
1281 | 1281 | template<class T>
|
1282 |
| - concept @\defexposconcept{pair-like}@ = // \expos |
| 1282 | + concept @\defexposconcept{pair-like}@ = // \expos |
1283 | 1283 | !is_reference_v<T> && requires(T t) {
|
1284 |
| - typename tuple_size<T>::type; // ensures \tcode{tuple_size<T>} is complete |
| 1284 | + typename tuple_size<T>::type; // ensures \tcode{tuple_size<T>} is complete |
1285 | 1285 | requires derived_from<tuple_size<T>, integral_constant<size_t, 2>>;
|
1286 | 1286 | typename tuple_element_t<0, remove_const_t<T>>;
|
1287 | 1287 | typename tuple_element_t<1, remove_const_t<T>>;
|
|
1290 | 1290 | };
|
1291 | 1291 |
|
1292 | 1292 | template<class T, class U, class V>
|
1293 |
| - concept @\defexposconcept{pair-like-convertible-to}@ = // \expos |
| 1293 | + concept @\defexposconcept{pair-like-convertible-to}@ = // \expos |
1294 | 1294 | !range<T> && @\exposconcept{pair-like}@<remove_reference_t<T>> &&
|
1295 | 1295 | requires(T&& t) {
|
1296 | 1296 | { get<0>(std::forward<T>(t)) } -> convertible_to<U>;
|
1297 | 1297 | { get<1>(std::forward<T>(t)) } -> convertible_to<V>;
|
1298 | 1298 | };
|
1299 | 1299 |
|
1300 | 1300 | template<class T, class U, class V>
|
1301 |
| - concept @\defexposconcept{pair-like-convertible-from}@ = // \expos |
| 1301 | + concept @\defexposconcept{pair-like-convertible-from}@ = // \expos |
1302 | 1302 | !range<T> && @\exposconcept{pair-like}@<T> && constructible_from<T, U, V>;
|
1303 | 1303 |
|
1304 | 1304 | template<class T>
|
1305 |
| - concept @\defexposconcept{iterator-sentinel-pair}@ = // \expos |
| 1305 | + concept @\defexposconcept{iterator-sentinel-pair}@ = // \expos |
1306 | 1306 | !range<T> && @\exposconcept{pair-like}@<T> &&
|
1307 | 1307 | sentinel_for<tuple_element_t<1, T>, tuple_element_t<0, T>>;
|
1308 | 1308 |
|
|
1315 | 1315 | K == subrange_kind::sized && !sized_sentinel_for<S, I>;
|
1316 | 1316 | I @\exposid{begin_}@ = I(); // \expos
|
1317 | 1317 | S @\exposid{end_}@ = S(); // \expos
|
1318 |
| - @\placeholdernc{make-unsigned-like-t}@(iter_difference_t<I>) @\exposid{size_}@ = 0; // \expos; present only |
| 1318 | + @\placeholdernc{make-unsigned-like-t}@(iter_difference_t<I>) @\exposid{size_}@ = 0; // \expos; present only |
1319 | 1319 | // when \exposid{StoreSize} is \tcode{true}
|
1320 | 1320 | public:
|
1321 | 1321 | subrange() = default;
|
|
0 commit comments