operator==,!=(std::function)

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 R, class... ArgTypes >
bool operator==( const function<R(ArgTypes...)>& f, std::nullptr_t );
(1)
template< class R, class... ArgTypes >
bool operator==( std::nullptr_t, const function<R(ArgTypes...)>& f );
(2)
template< class R, class... ArgTypes >
bool operator!=( const function<R(ArgTypes...)>& f, std::nullptr_t );
(3)
template< class R, class... ArgTypes >
bool operator!=( std::nullptr_t, const function<R(ArgTypes...)>& f );
(4)

Compares a std::function with a null pointer. Empty functions (that is, functions without a callable target) compare equal, non-empty functions compare non-equal.

[edit] Parameters

f - std::function to compare

[edit] Return value

1-2) !f

3-4) (bool) f

[edit] Example

#include <functional>
#include <iostream>
 
typedef std::function<void(int)> SomeVoidFunc;
 
class C
{
public:
  C(SomeVoidFunc void_func = nullptr)
  : void_func_(void_func)
  {
    if (void_func_ == nullptr) // specialized compare with nullptr
    {
      void_func_ = std::bind(&C::default_func, this, std::placeholders::_1);
    }
    void_func_(7);
  }
 
  void default_func(int i) { std::cout << i << '\n'; };
 
private:
  SomeVoidFunc void_func_;
};
 
void user_func(int i)
{
  std::cout << (i + 1) << '\n';
}
 
int main()
{
  C c1;
  C c2(user_func);
}

Output:

7
8