std::function::target

From cppreference.com
< cpp‎ | utility‎ | functional‎ | function
 
 
 
Function objects


Function wrappers
(C++11)
(C++11)
Bind
(C++11)
(C++11)
(C++11)
Reference wrappers
(C++11)(C++11)
Operator wrappers
Negators
Deprecated binders and adaptors
(deprecated)
(deprecated)
(deprecated)
(deprecated)
(deprecated)(deprecated)(deprecated)(deprecated)
(deprecated)
(deprecated)(deprecated)(deprecated)(deprecated)
(deprecated)(deprecated)
(deprecated)(deprecated)
 
 
template< class T >
T* target();
(1) (since C++11)
template< class T >
const T* target() const;
(2) (since C++11)

Returns a pointer to the stored callable function target.

Contents

[edit] Parameters

(none)

[edit] Return value

A pointer to the stored function if target_type() == typeid(T), otherwise a null pointer.

[edit] Exceptions

noexcept specification:  
noexcept
  

[edit] Example

#include <functional>
#include <iostream>
 
void normal_fun()
{
   std::cout << "hello\n";
}
 
int main()
{
  using fptr = void(*)();
 
  fptr fun = normal_fun; //pointer to function
 
  std::function<void()> f = fun;
 
  fun = *f.target<fptr>();
  //I know that f keeps a fptr object, then I invoke target<fptr> to make a copy
  //of the object
  fun();
 
  std::cout << std::boolalpha << (f.target<int>() == nullptr) << '\n';
  //f doesn't keep an object of type int
}

Output:

hello 
true

[edit] See also

obtains the typeid of the stored target of a std::function
(public member function)