std::function<R(Args...)>:: target
From cppreference.net
<
cpp
|
utility
|
functional
|
function
C++
Utilities library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Function objects
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Old binders and adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::function
| Member functions | ||||
|
(until C++17)
|
||||
|
function::target
|
||||
| Non-member functions | ||||
|
(until C++20)
|
||||
| Helper classes | ||||
|
(until C++17)
|
||||
| Deduction guides (C++17) |
|
template
<
class
T
>
T * target ( ) noexcept ; |
(1) | (seit C++11) |
|
template
<
class
T
>
const T * target ( ) const noexcept ; |
(2) | (seit C++11) |
Gibt einen Zeiger auf das gespeicherte aufrufbare Funktionsziel zurück.
Inhaltsverzeichnis |
Parameter
(keine)
Rückgabewert
Ein Zeiger auf die gespeicherte Funktion, falls target_type ( ) == typeid ( T ) , andernfalls ein Nullzeiger.
Beispiel
Diesen Code ausführen
#include <functional> #include <iostream> int f(int, int) { return 1; } int g(int, int) { return 2; } void test(std::function<int(int, int)> const& arg) { std::cout << "Testfunktion: "; if (arg.target<std::plus<int>>()) std::cout << "es ist plus\n"; if (arg.target<std::minus<int>>()) std::cout << "es ist minus\n"; int (*const* ptr)(int, int) = arg.target<int(*)(int, int)>(); if (ptr && *ptr == f) std::cout << "es ist die Funktion f\n"; if (ptr && *ptr == g) std::cout << "es ist die Funktion g\n"; } int main() { test(std::function<int(int, int)>(std::plus<int>())); test(std::function<int(int, int)>(std::minus<int>())); test(std::function<int(int, int)>(f)); test(std::function<int(int, int)>(g)); }
Ausgabe:
Testfunktion: es ist plus Testfunktion: es ist minus Testfunktion: es ist die Funktion f Testfunktion: es ist die Funktion g
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2591 | C++11 |
das Verhalten ist undefiniert wenn
T
nicht
Callable
ist
|
Verhalten ist definiert (gibt immer
nullptr
zurück)
|
Siehe auch
|
ermittelt den
typeid
des gespeicherten Ziels
(öffentliche Elementfunktion) |