std::mem_fun_ref
| Definiert in der Header-Datei <functional> |
||
| template< class Res, class T > std::mem_fun_ref_t<Res,T> mem_fun_ref( Res (T::*f)() ); |
(1) | (in C++11 veraltet) (removed in C++17) |
| template< class Res, class T > std::const_mem_fun_ref_t<Res,T> mem_fun_ref( Res (T::*f)() const ); |
(1) | (in C++11 veraltet) (removed in C++17) |
| template< class Res, class T, class Arg > std::mem_fun1_ref_t<Res,T,Arg> mem_fun_ref( Res (T::*f)(Arg) ); |
(2) | (in C++11 veraltet) (removed in C++17) |
| template< class Res, class T, class Arg > std::const_mem_fun1_ref_t<Res,T,Arg> mem_fun_ref( Res (T::*f)(Arg) const ); |
(2) | (in C++11 veraltet) (removed in C++17) |
Erstellt ein Wrapper-Objekt für eine Member-Funktion, wobei der Zieltyp aus den Template-Argumenten abgeleitet wird. Das Wrapper-Objekt erwartet als ersten Parameter eine Referenz auf ein Objekt vom Typ T für seinen operator().
Diese Funktion und die zugehörigen Typen wurden in C++11 als veraltet markiert und in C++17 zugunsten des allgemeineren std::mem_fn und std::bind entfernt, die beide aufrufkompatible Adapter-Funktionsobjekte aus Member-Funktionen erstellen.
Inhalt |
[bearbeiten] Parameter
| f | - | Zeiger auf eine Member-Funktion, für die ein Wrapper erstellt werden soll |
[bearbeiten] Rückgabewert
Ein Funktions-Objekt, das f wrappt.
[edit] Exceptions
Kann implementierungsdefinierte Ausnahmen auslösen.
[bearbeiten] Anmerkungen
Der Unterschied zwischen std::mem_fun und std::mem_fun_ref besteht darin, dass ersteres einen Funktions-Wrapper erzeugt, der einen Zeiger auf ein Objekt erwartet, während letzteres eine Referenz erwartet.
[bearbeiten] Beispiel
Verwendet std::mem_fun_ref, um die Member-Funktion size() von std::string zu binden.
#include <algorithm> #include <functional> #include <iostream> #include <iterator> #include <string> #include <vector> int main() { std::vector<std::string> v = {"once", "upon", "a", "time"}; std::transform(v.cbegin(), v.cend(), std::ostream_iterator<std::size_t>(std::cout, " "), std::mem_fun_ref(&std::string::size)); }
Ausgabe
4 4 1 4
[bearbeiten] Siehe auch
| (in C++11 veraltet)(in C++17 entfernt) |
erstellt einen Wrapper aus einem Zeiger auf eine Member-Funktion, aufrufbar mit einem Objektzeiger (Funktionsvorlage) |