27 lines
845 B
Markdown
27 lines
845 B
Markdown
[indirectcallable.traits]
|
|
|
|
# 24 Iterators library [[iterators]](./#iterators)
|
|
|
|
## 24.3 Iterator requirements [[iterator.requirements]](iterator.requirements#indirectcallable.traits)
|
|
|
|
### 24.3.6 Indirect callable requirements [[indirectcallable]](indirectcallable#traits)
|
|
|
|
#### 24.3.6.2 Indirect callable traits [indirectcallable.traits]
|
|
|
|
[1](#1)
|
|
|
|
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L2436)
|
|
|
|
To implement algorithms taking projections,
|
|
it is necessary to determine the projected type of an iterator's value type[.](#1.sentence-1)
|
|
|
|
For the exposition-only alias template *indirect-value-t*,*indirect-value-t*<T> denotes
|
|
|
|
- [(1.1)](#1.1)
|
|
|
|
invoke_result_t<Proj&, *indirect-value-t*<I>> if T names projected<I, Proj>, and
|
|
|
|
- [(1.2)](#1.2)
|
|
|
|
iter_value_t<T>& otherwise[.](#1.sentence-2)
|