@@ -260,7 +260,8 @@ class iterator_facade : detail::iterator_facade_base {
260
260
*/
261
261
[[nodiscard]] constexpr friend auto operator -(const self_type& left,
262
262
const self_type& right) noexcept
263
- requires detail::iter_is_random_access<self_type> {
263
+ requires detail::iter_is_random_access<self_type>
264
+ {
264
265
return right.distance_to (left);
265
266
}
266
267
@@ -297,8 +298,9 @@ class iterator_facade : detail::iterator_facade_base {
297
298
}
298
299
}
299
300
300
- constexpr self_type& operator --() noexcept requires
301
- detail::iter_is_bidirectional<self_type> {
301
+ constexpr self_type& operator --() noexcept
302
+ requires detail::iter_is_bidirectional<self_type>
303
+ {
302
304
if constexpr (detail::iter_has_decrement_method<self_type>) {
303
305
_self ().decrement ();
304
306
} else {
@@ -307,31 +309,35 @@ class iterator_facade : detail::iterator_facade_base {
307
309
return _self ();
308
310
}
309
311
310
- constexpr self_type operator --(
311
- int ) noexcept requires detail::iter_is_bidirectional<self_type> {
312
+ constexpr self_type operator --(int ) noexcept
313
+ requires detail::iter_is_bidirectional<self_type>
314
+ {
312
315
auto cp = _self ();
313
316
--*this ;
314
317
return cp;
315
318
}
316
319
317
320
template <detail::iter_diff<self_type> Diff>
318
- [[nodiscard]] constexpr friend self_type operator +(
319
- self_type left,
320
- Diff off) noexcept requires detail::iter_is_random_access<self_type> {
321
+ [[nodiscard]] constexpr friend self_type operator +(self_type left,
322
+ Diff off) noexcept
323
+ requires detail::iter_is_random_access<self_type>
324
+ {
321
325
return left += off;
322
326
}
323
327
324
328
template <detail::iter_diff<self_type> D>
325
329
[[nodiscard]] constexpr friend self_type operator +(
326
- D off, const self_type& self) noexcept requires
327
- detail::iter_is_random_access<self_type> {
330
+ D off, const self_type& self) noexcept
331
+ requires detail::iter_is_random_access<self_type>
332
+ {
328
333
return self + off;
329
334
}
330
335
331
336
template <detail::iter_diff<self_type> D>
332
- [[nodiscard]] constexpr friend self_type operator -(
333
- const self_type& self,
334
- D off) noexcept requires detail::iter_is_random_access<self_type> {
337
+ [[nodiscard]] constexpr friend self_type operator -(const self_type& self,
338
+ D off) noexcept
339
+ requires detail::iter_is_random_access<self_type>
340
+ {
335
341
using diff_type = detail::infer_difference_type_t <self_type>;
336
342
using signed_diff_type = std::make_signed_t <diff_type>;
337
343
return self + -static_cast <signed_diff_type>(off);
@@ -345,20 +351,23 @@ class iterator_facade : detail::iterator_facade_base {
345
351
346
352
template <detail::iter_diff<self_type> D>
347
353
constexpr friend self_type& operator +=(self_type& self, D off) noexcept
348
- requires detail::iter_is_random_access<self_type> {
354
+ requires detail::iter_is_random_access<self_type>
355
+ {
349
356
self.advance (off);
350
357
return self;
351
358
}
352
359
353
360
template <detail::iter_diff<self_type> D>
354
361
constexpr friend self_type& operator -=(self_type& self, D off) noexcept
355
- requires detail::iter_is_random_access<self_type> {
362
+ requires detail::iter_is_random_access<self_type>
363
+ {
356
364
return self = self - off;
357
365
}
358
366
359
367
template <detail::iter_diff<self_type> D>
360
- [[nodiscard]] constexpr decltype (auto ) operator[](
361
- D pos) const noexcept requires detail::iter_is_random_access<self_type> {
368
+ [[nodiscard]] constexpr decltype (auto ) operator[](D pos) const noexcept
369
+ requires detail::iter_is_random_access<self_type>
370
+ {
362
371
return *(_self () + pos);
363
372
}
364
373
@@ -422,13 +431,15 @@ class iterator_facade : detail::iterator_facade_base {
422
431
*/
423
432
[[nodiscard]] friend constexpr bool operator <(const self_type& left,
424
433
const self_type& right) noexcept
425
- requires detail::iter_is_random_access<self_type> {
434
+ requires detail::iter_is_random_access<self_type>
435
+ {
426
436
return (left - right) < 0 ;
427
437
}
428
438
429
439
[[nodiscard]] friend constexpr bool operator <=(
430
- const self_type& left, const self_type& right) noexcept requires
431
- detail::iter_is_random_access<self_type> {
440
+ const self_type& left, const self_type& right) noexcept
441
+ requires detail::iter_is_random_access<self_type>
442
+ {
432
443
return (left - right) <= 0 ;
433
444
}
434
445
@@ -437,13 +448,15 @@ class iterator_facade : detail::iterator_facade_base {
437
448
*/
438
449
[[nodiscard]] friend constexpr bool operator >(const self_type& left,
439
450
const self_type& right) noexcept
440
- requires detail::iter_is_random_access<self_type> {
451
+ requires detail::iter_is_random_access<self_type>
452
+ {
441
453
return (left - right) > 0 ;
442
454
}
443
455
444
456
[[nodiscard]] friend constexpr bool operator >=(
445
- const self_type& left, const self_type& right) noexcept requires
446
- detail::iter_is_random_access<self_type> {
457
+ const self_type& left, const self_type& right) noexcept
458
+ requires detail::iter_is_random_access<self_type>
459
+ {
447
460
return (left - right) >= 0 ;
448
461
}
449
462
}; // namespace utl
@@ -484,8 +497,8 @@ class iterator_wrapper_facade : public iterator_facade<Derived> {
484
497
namespace std {
485
498
486
499
template <typename Derived>
487
- requires std::is_base_of_v<utl::detail::iterator_facade_base,
488
- Derived> //
500
+ requires std::is_base_of_v<utl::detail::iterator_facade_base,
501
+ Derived> //
489
502
struct iterator_traits <Derived> {
490
503
static const Derived& _const_it;
491
504
using reference = decltype(*_const_it);
0 commit comments