Loading [MathJax]/jax/input/TeX/config.js
Iros
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Loading...
Searching...
No Matches
projected.h
Go to the documentation of this file.
1#pragma once
2
9#include "di/meta/core.h"
11#include "di/types/prelude.h"
12#include "di/util/declval.h"
13
14namespace di::meta {
15template<concepts::IndirectlyReadable It, concepts::IndirectlyRegularUnaryInvocable<It> Proj>
16struct Projected {
20
21#ifdef DI_CLANG
22#pragma GCC diagnostic push
23#pragma GCC diagnostic ignored "-Wundefined-internal"
24#endif
25 auto operator*() const -> Reference;
26#ifdef DI_CLANG
27#pragma GCC diagnostic pop
28#endif
29
37};
38}
Definition merge_interfaces.h:6
RemoveCV< RemoveReference< T > > RemoveCVRef
Definition core.h:74
InvokeResult< F, meta::IteratorReference< Its >... > IndirectResult
Definition indirect_result.h:10
decltype(container::iterator_ssize_type(types::in_place_type< meta::RemoveCVRef< T > >)) IteratorSSizeType
Definition iterator_ssize_type.h:8
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
constexpr auto in_place_type
Definition in_place_type.h:12
Definition projected.h:16
meta::IteratorSSizeType< It > SSizeType
Definition projected.h:19
constexpr friend auto tag_invoke(types::Tag< container::iterator_value >, InPlaceType< Projected >) -> InPlaceType< Value >
Definition projected.h:30
constexpr friend auto tag_invoke(types::Tag< container::iterator_ssize_type >, InPlaceType< Projected >) -> SSizeType
Definition projected.h:34
auto operator*() const -> Reference
meta::IndirectResult< Proj &, It > Reference
Definition projected.h:17
meta::RemoveCVRef< Reference > Value
Definition projected.h:18
Definition in_place_type.h:5