|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Old binders and adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
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) | (since C++11) |
template<class T> const T* target()constnoexcept; | (2) | (since C++11) |
Returns a pointer to the stored callable function target.
Contents |
(none)
A pointer to the stored function iftarget_type()==typeid(T), otherwise a null pointer.
#include <functional>#include <iostream> int f(int,int){return1;}int g(int,int){return2;}void test(std::function<int(int,int)>const& arg){std::cout<<"test function: ";if(arg.target<std::plus<int>>())std::cout<<"it is plus\n";if(arg.target<std::minus<int>>())std::cout<<"it is minus\n"; int(*const* ptr)(int,int)= arg.target<int(*)(int,int)>();if(ptr&&*ptr== f)std::cout<<"it is the function f\n";if(ptr&&*ptr== g)std::cout<<"it is the function 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));}
Output:
test function: it is plustest function: it is minustest function: it is the function ftest function: it is the function g
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 2591 | C++11 | the behavior is undefined ifT is notCallable | behavior is defined (always returnsnullptr ) |
obtains thetypeid of the stored target (public member function)[edit] |