Iros
Loading...
Searching...
No Matches
iterator.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/meta/iterator_category.h
"
4
#include "
di/container/meta/iterator_reference.h
"
5
#include "
di/container/meta/iterator_size_type.h
"
6
#include "
di/container/meta/iterator_ssize_type.h
"
7
#include "
di/container/meta/iterator_value.h
"
8
#include "
di/meta/core.h
"
9
#include "
di/meta/operations.h
"
10
#include "
di/util/as_const.h
"
11
12
namespace
di::concepts
{
13
template
<
typename
Iter>
14
concept
Iterator
=
Movable<Iter>
&&
requires
(
meta::RemoveCVRef<Iter>
it) {
15
typename
meta::IteratorCategory<Iter>
;
16
typename
meta::IteratorValue<Iter>
;
17
typename
meta::IteratorReference<Iter>
;
18
typename
meta::IteratorSSizeType<Iter>
;
19
typename
meta::IteratorSizeType<Iter>
;
20
{ ++it } ->
SameAs<meta::RemoveCVRef<Iter>
&>;
21
it++;
22
{ *util::as_const(it) } ->
SameAs<meta::IteratorReference<Iter>
>;
23
};
24
}
di::concepts::Iterator
Definition
iterator.h:14
di::concepts::Movable
Definition
operations.h:49
di::concepts::SameAs
Definition
core.h:114
core.h
operations.h
iterator_reference.h
iterator_size_type.h
iterator_category.h
iterator_ssize_type.h
iterator_value.h
di::concepts
Definition
any_storable.h:9
di::meta::RemoveCVRef
RemoveCV< RemoveReference< T > > RemoveCVRef
Definition
core.h:74
di::meta::IteratorCategory
decltype(container::iterator_category(types::in_place_type< meta::RemoveCVRef< T > >)) IteratorCategory
Definition
iterator_category.h:8
di::meta::IteratorSSizeType
decltype(container::iterator_ssize_type(types::in_place_type< meta::RemoveCVRef< T > >)) IteratorSSizeType
Definition
iterator_ssize_type.h:8
di::meta::IteratorValue
meta::Type< decltype(container::iterator_value(types::in_place_type< meta::RemoveCVRef< T > >))> IteratorValue
Definition
iterator_value.h:8
di::meta::IteratorReference
decltype(*util::declval< T const & >()) IteratorReference
Definition
iterator_reference.h:7
di::meta::IteratorSizeType
MakeUnsigned< IteratorSSizeType< T > > IteratorSizeType
Definition
iterator_size_type.h:8
as_const.h
libs
di
include
di
container
concepts
iterator.h
Generated by
1.13.0