Namensräume
Varianten
Aktionen

std::experimental::ranges::invoke

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
Allgemeine Dienstprogramme-Bibliothek
Hilfskomponenten
Funktionsobjekte
invoke
Metaprogrammierung und Typ-Traits
Getaggte Paare und Tupel
                          
Tag-Spezifizierer
                                      
                          
 
template< class F, class... Args >
std::result_of_t<F&&(Args&&...)> invoke( F&& f, Args&&... args );
(Ranges TS)

Ruft das Callable-Objekt f mit den Parametern args auf und gibt das Ergebnis zurück, als ob durch return INVOKE(std::forward<F>(f), std::forward<Args>(args)...);, wobei INVOKE(f, t1, t2, ..., tN) wie folgt definiert ist

  • Wenn std::is_base_of<T, std::decay_t<decltype(t1)>>::value true ist, dann ist INVOKE(f, t1, t2, ..., tN) äquivalent zu (t1.*f)(t2, ..., tN),
  • andernfalls ist INVOKE(f, t1, t2, ..., tN) äquivalent zu ((*t1).*f)(t2, ..., tN).
  • Wenn std::is_base_of<T, std::decay_t<decltype(t1)>>::value true ist, dann ist INVOKE(f, t1) äquivalent zu t1.*f,
  • andernfalls ist INVOKE(f, t1) äquivalent zu (*t1).*f.
  • andernfalls ist INVOKE(f, t1, t2, ..., tN) äquivalent zu f(t1, t2, ..., tN) (d. h. f ist ein FunctionObject).

[bearbeiten] Parameter

f - Callable-Objekt, das aufgerufen werden soll
args - Argumente, die an f übergeben werden sollen

[bearbeiten] Siehe auch

(C++17)(C++23)
ruft jedes Callable-Objekt mit gegebenen Argumenten auf und der Möglichkeit, den Rückgabetyp anzugeben(seit C++23)
(Funktions-Template) [bearbeiten]