Iros
Loading...
Searching...
No Matches
indirectly_readable.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/iterator/iterator_move.h
"
4
#include "
di/container/meta/iterator_reference.h
"
5
#include "
di/container/meta/iterator_rvalue.h
"
6
#include "
di/container/meta/iterator_value.h
"
7
#include "
di/meta/common.h
"
8
#include "
di/meta/core.h
"
9
10
namespace
di::concepts
{
11
namespace
detail
{
12
template
<
typename
T>
13
concept
IndirectlyReadableHelper
=
14
requires
(T
const
input) {
15
typename
meta::IteratorValue<T>
;
16
typename
meta::IteratorReference<T>
;
17
typename
meta::IteratorRValue<T>
;
18
{ *input } ->
SameAs<meta::IteratorReference<T>
>;
19
{
container::iterator_move
(input) } ->
SameAs<meta::IteratorRValue<T>
>;
20
} &&
concepts::CommonReferenceWith<meta::IteratorReference<T>
&&,
meta::IteratorValue<T>
&> &&
21
concepts::CommonReferenceWith<meta::IteratorReference<T>
&&,
meta::IteratorRValue<T>
&&> &&
22
concepts::CommonReferenceWith<meta::IteratorRValue<T>
&&,
meta::IteratorValue<T>
const
&>;
23
}
24
25
template
<
typename
T>
26
concept
IndirectlyReadable
=
detail::IndirectlyReadableHelper<meta::RemoveCVRef<T>
>;
27
}
di::concepts::CommonReferenceWith
Definition
common.h:203
di::concepts::IndirectlyReadable
Definition
indirectly_readable.h:26
di::concepts::SameAs
Definition
core.h:114
di::concepts::detail::IndirectlyReadableHelper
Definition
indirectly_readable.h:13
core.h
iterator_move.h
iterator_reference.h
iterator_rvalue.h
common.h
iterator_value.h
di::concepts::detail
Definition
impl.h:7
di::concepts
Definition
any_storable.h:9
di::container::iterator_move
constexpr auto iterator_move
Definition
iterator_move.h:56
di::meta::IteratorRValue
decltype(container::iterator_move(util::declval< T & >())) IteratorRValue
Definition
iterator_rvalue.h:9
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
libs
di
include
di
container
concepts
indirectly_readable.h
Generated by
1.13.0