di
0.1.0
Loading...
Searching...
No Matches
cend.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/container/concepts/iterator.h
"
4
#include "
di/container/interface/enable_borrowed_container.h
"
5
#include "
di/container/interface/end.h
"
6
#include "
di/container/interface/possibly_const_container.h
"
7
#include "
di/container/meta/const_sentinel.h
"
8
#include "
di/function/tag_invoke.h
"
9
#include "
di/meta/core.h
"
10
#include "
di/meta/util.h
"
11
#include "
di/util/forward.h
"
12
13
namespace
di::container
{
14
struct
CEndFunction
:
function::pipeline::EnablePipeline
{
15
template
<concepts::InputContainer T>
16
requires
(
enable_borrowed_container
(
types::in_place_type
<
meta::RemoveCV<T>
>))
17
constexpr
auto
operator
()(T&&
container
)
const
{
18
return
meta::ConstSentinel<decltype(container::end(detail::possibly_const_container(container)))>
(
19
container::end
(detail::possibly_const_container(
container
)));
20
}
21
};
22
23
constexpr
inline
auto
cend
=
CEndFunction
{};
24
}
25
26
namespace
di
{
27
using
container::cend
;
28
}
const_sentinel.h
core.h
end.h
forward.h
enable_borrowed_container.h
iterator.h
di::container
Definition
sequence.h:12
di::container::enable_borrowed_container
constexpr struct di::container::EnableBorrowedContainer enable_borrowed_container
di::container::cend
constexpr auto cend
Definition
cend.h:23
di::container::end
constexpr auto end
Definition
end.h:55
di::meta::ConstSentinel
detail::ConstSentinelHelper< Sent >::Type ConstSentinel
Definition
const_sentinel.h:17
di::meta::RemoveCV
RemoveConst< RemoveVolatile< T > > RemoveCV
Definition
core.h:57
di::types::in_place_type
constexpr auto in_place_type
Definition
in_place_type.h:12
di
Definition
any_storable.h:9
possibly_const_container.h
di::container::CEndFunction
Definition
cend.h:14
di::function::pipeline::EnablePipeline
Definition
pipeable.h:8
tag_invoke.h
util.h
di
container
interface
cend.h
Generated by
1.13.2