NAME

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

Synopsis


template< class R, class... ArgTypes > (1) (since C++11)
bool operator==( const std::function<R(ArgTypes...)>& f, std::nullptr_t ) noexcept;
template< class R, class... ArgTypes > (2) (since C++11)
bool operator==( std::nullptr_t, const std::function<R(ArgTypes...)>& f ) noexcept;
template< class R, class... ArgTypes > (3) (since C++11)
bool operator!=( const std::function<R(ArgTypes...)>& f, std::nullptr_t ) noexcept;
template< class R, class... ArgTypes > (4) (since C++11)
bool operator!=( std::nullptr_t, const std::function<R(ArgTypes...)>& f ) noexcept;


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.

Parameters


f - std::function to compare

Return value


1-2) !f
3-4) (bool) f

Example


// Run this code


  #include <functional>
  #include <iostream>


  using SomeVoidFunc = std::function<void(int)>;


  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