std::ptr_fun
Von cppreference.com
< cpp | utility | functional
| Definiert in der Header-Datei <functional> |
||
| template< class Arg, class Result > std::pointer_to_unary_function<Arg,Result> |
(1) | (in C++11 veraltet) (removed in C++17) |
| template< class Arg1, class Arg2, class Result > std::pointer_to_binary_function<Arg1,Arg2,Result> |
(2) | (in C++11 veraltet) (removed in C++17) |
Erzeugt ein Funktions-Wrapper-Objekt (entweder std::pointer_to_unary_function oder std::pointer_to_binary_function), wobei der Zieltyp aus den Template-Argumenten abgeleitet wird.
1) Ruft effektiv std::pointer_to_unary_function<Arg,Result>(f) auf.
2) Ruft effektiv std::pointer_to_binary_function<Arg1,Arg2,Result>(f) auf.
Diese Funktion und die zugehörigen Typen sind seit C++11 veraltet zugunsten der allgemeineren std::function und std::ref, die beide aufrufbare, mit Adaptoren kompatible Funktions-Objekte aus einfachen Funktionen erstellen.
Inhalt |
[bearbeiten] Parameter
| f | - | Zeiger auf eine 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] Beispiel
Führen Sie diesen Code aus
#include <algorithm> #include <functional> #include <iostream> #include <string_view> constexpr bool is_vowel(char c) { return std::string_view{"aeoiuAEIOU"}.find(c) != std::string_view::npos; } int main() { std::string_view s = "Hello, world!"; std::ranges::copy_if(s, std::ostreambuf_iterator<char>(std::cout), std::not1(std::ptr_fun(is_vowel))); #if 0 // C++11 alternatives: std::not1(std::cref(is_vowel))); std::not1(std::function<bool(char)>(is_vowel))); [](char c) { return !is_vowel(c); }); // C++17 alternatives: std::not_fn(is_vowel)); #endif }
Ausgabe
Hll, wrld!
[bearbeiten] Siehe auch
| (C++11) |
kopierfähiger Wrapper für jedes kopierkonstruierbare aufrufbare Objekt (Klassen-Template) |
| (C++23) |
Move-only-Wrapper für jedes aufrufbare Objekt, das Qualifizierer in einer gegebenen Aufrufsignatur unterstützt (Klassen-Template) |
| (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) |
| (C++17) |
erstellt ein Funktions-Objekt, das das Komplement des Ergebnisses des gehaltenen Funktions-Objekts zurückgibt (Funktions-Template) |