Iros
 
Loading...
Searching...
No Matches
sentinel_base.h
Go to the documentation of this file.
1#pragma once
2
3namespace di::container {
4namespace detail {
5 template<typename It, typename T>
6 concept Sized = requires(It const& it, T const& sent) { sent.difference(it); };
7
8 template<typename It, typename T>
9 concept Equal = requires(It const& it, T const& sent) { sent.equals(it); };
10}
11
12template<typename Self>
14private:
15 template<detail::Sized<Self> Iter>
16 constexpr friend auto operator-(Self const& sent, Iter const& it) {
17 return sent.difference(it);
18 }
19
20 template<detail::Sized<Self> Iter>
21 constexpr friend auto operator-(Iter const& it, Self const& sent) {
22 return -sent.difference(it);
23 }
24
25 template<typename U>
27 constexpr friend auto operator==(Self const& sent, U const& it) -> bool {
28 return sent.equals(it);
29 }
30};
31}
Definition sentinel_base.h:13
constexpr friend auto operator-(Self const &sent, Iter const &it)
Definition sentinel_base.h:16
constexpr friend auto operator-(Iter const &it, Self const &sent)
Definition sentinel_base.h:21
Definition sentinel_base.h:9
Definition sentinel_base.h:6
Definition sequence.h:13
Definition sequence.h:12