Iros
 
Loading...
Searching...
No Matches
sentinel_extension.h
Go to the documentation of this file.
1#pragma once
2
6
7namespace di::container {
8template<typename Self, typename Sent, typename WrappedIter, concepts::Iterator Iter>
9requires(concepts::SentinelFor<Sent, Iter>)
10class SentinelExtension : public SentinelBase<Self> {
11public:
12 SentinelExtension() = default;
13
14 constexpr explicit SentinelExtension(Sent base) : m_base(base) {}
15
16 constexpr auto base() const -> Sent { return m_base; }
17
18 constexpr auto difference(WrappedIter const& a) const
20 {
21 return this->base() - a.base();
22 }
23
24private:
25 constexpr friend auto operator==(Self const& a, WrappedIter const& b) -> bool { return a.base() == b.base(); }
26
27 Sent m_base;
28};
29}
Definition sentinel_base.h:13
constexpr auto difference(WrappedIter const &a) const
Definition sentinel_extension.h:18
constexpr SentinelExtension(Sent base)
Definition sentinel_extension.h:14
constexpr auto base() const -> Sent
Definition sentinel_extension.h:16
constexpr friend auto operator==(Self const &a, WrappedIter const &b) -> bool
Definition sentinel_extension.h:25
Definition sized_sentinel_for.h:9
Definition sequence.h:12