std:: indirect_result_t
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definiert im Header
<iterator>
|
||
|
template
<
class
F,
class
...
Is
>
erfordert
(
std::
indirectly_readable
<
Is
>
&&
...
)
&&
|
(seit C++20) | |
Die Alias-Vorlage
indirect_result_t
ermittelt den Ergebnistyp des Aufrufs eines
invocable
Typs
F
auf das Ergebnis der Dereferenzierung von
indirectly_readable
Typen
Is...
.
Template-Parameter
| F | - | ein aufrufbarer Typ |
| Is | - | indirekt lesbare Typen, die zu Argumenten dereferenziert werden |
Beispiel
#include <iterator> #include <type_traits> struct Fn { long operator()(const int&); int operator()(int&&); short operator()(int, int) const; auto operator()(const float) -> int&; void operator()(int[8]); }; static_assert( std::is_same_v<std::indirect_result_t<Fn, const int*>, long> und std::is_same_v<std::indirect_result_t<Fn, std::move_iterator<int*>>, int> und std::is_same_v<std::indirect_result_t<const Fn, int*, int*>, short> und std::is_same_v<std::indirect_result_t<Fn, float*>, int&> und std::is_same_v<std::indirect_result_t<Fn, int**>, void> ); int main() {}
Siehe auch
|
(C++11)
(entfernt in C++20)
(C++17)
|
leitet den Ergebnistyp des Aufrufs eines aufrufbaren Objekts mit einer Menge von Argumenten ab
(Klassen-Template) |
|
(C++26)
|
berechnet den Werttyp eines
indirectly_readable
Typs durch Projektion
(Alias-Template) |