std::function::target

From cppreference.com
 
 
 
Function objects
Function wrappers
function (C++11)
mem_fn (C++11)
bad_function_call (C++11)
Bind
bind (C++11)
is_bind_expression (C++11)
is_placeholder (C++11)
_1, _2, _3, ... (C++11)
Reference wrappers
reference_wrapper (C++11)
ref
cref
(C++11)
(C++11)
Operator wrappers
Negators
Deprecated binders and adaptors
unary_function (deprecated)
binary_function (deprecated)
ptr_fun (deprecated)
pointer_to_unary_function (deprecated)
pointer_to_binary_function (deprecated)
mem_fun (deprecated)
mem_fun_t
mem_fun1_t
const_mem_fun_t
const_mem_fun1_t
(deprecated)
(deprecated)
(deprecated)
(deprecated)
mem_fun_ref (deprecated)
mem_fun_ref_t
mem_fun1_ref_t
const_mem_fun_ref_t
const_mem_fun1_ref_t
(deprecated)
(deprecated)
(deprecated)
(deprecated)
binder1st
binder2nd
(deprecated)
(deprecated)
bind1st
bind2nd
(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 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
  (since C++11)

[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)