23#ifndef VCL_VIEWS_POINTERS_H
24#define VCL_VIEWS_POINTERS_H
34 constexpr NotNullView() =
default;
36 template<std::ranges::range R>
37 friend constexpr auto operator|(R&& r, NotNullView)
39 return std::views::filter(r, [](
auto* p) {
47 constexpr DereferenceView() =
default;
49 template<std::ranges::range R>
50 friend constexpr auto operator|(R&& r, DereferenceView)
52 return std::views::transform(r, [](
auto p) {
60 constexpr AddressOfView() =
default;
62 template<std::ranges::range R>
63 friend constexpr auto operator|(R&& r, AddressOfView)
65 return std::views::transform(r, [](
auto& o) {
71struct ConstAddressOfView
73 constexpr ConstAddressOfView() =
default;
75 template<std::ranges::range R>
76 friend constexpr auto operator|(R&& r, ConstAddressOfView)
78 return std::views::transform(r, [](
const auto& o) {
92inline constexpr detail::NotNullView
notNull;
110inline constexpr detail::DereferenceView
deref;
120inline constexpr detail::AddressOfView
addrOf;
constexpr detail::ConstAddressOfView constAddrOf
The constAddrOf view applies the address-of operator & on the input view.
Definition pointers.h:132
constexpr detail::NotNullView notNull
The notNull view allows to filter the pointers of a range. The resulting view will iterate only on th...
Definition pointers.h:92
constexpr detail::DereferenceView deref
The deref view the dereference operator * on the input view.
Definition pointers.h:110
constexpr detail::AddressOfView addrOf
The addrOf view applies the address-of operator & on the input view.
Definition pointers.h:120