Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/utility/functional/function/operator cmp"

From cppreference.com
< cpp‎ | utility‎ | functional‎ | function
m (r2.7.3) (Robot: Adding de, es, fr, it, ja, pt, ru, zh)
(Added example code)
Line 35: Line 35:
 
{{example
 
{{example
 
  | code=
 
  | code=
 +
#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=
 
  | output=
 +
7
 +
8
 
}}
 
}}
  

Revision as of 13:17, 28 November 2012

 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 
Function objects
Function invocation
(C++17)(C++23)
Identity function object
(C++20)
Transparent operator wrappers
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Old binders and adaptors
(until C++17*)
(until C++17*)
(until C++17*)
(until C++17*)  
(until C++17*)
(until C++17*)(until C++17*)(until C++17*)(until C++17*)
(until C++20*)
(until C++20*)
(until C++17*)(until C++17*)
(until C++17*)(until C++17*)

(until C++17*)
(until C++17*)(until C++17*)(until C++17*)(until C++17*)
(until C++20*)
(until C++20*)
 
 

Template:ddcl list begin <tr class="t-dcl ">

<td >
template< class R, class... ArgTypes >
bool operator==( const function<R(ArgTypes...)>& f, std::nullptr_t );
</td>

<td > (1) </td> <td class="t-dcl-nopad"> </td> </tr> <tr class="t-dcl ">

<td >
template< class R, class... ArgTypes >
bool operator==( std::nullptr_t, const function<R(ArgTypes...)>& f );
</td>

<td > (2) </td> <td class="t-dcl-nopad"> </td> </tr> <tr class="t-dcl ">

<td >
template< class R, class... ArgTypes >
bool operator!=( const function<R(ArgTypes...)>& f, std::nullptr_t );
</td>

<td > (3) </td> <td class="t-dcl-nopad"> </td> </tr> <tr class="t-dcl ">

<td >
template< class R, class... ArgTypes >
bool operator!=( std::nullptr_t, const function<R(ArgTypes...)>& f );
</td>

<td > (4) </td> <td class="t-dcl-nopad"> </td> </tr> Template:ddcl list end

Compares a std::function with a null pointer.

Parameters

f - std::function to compare

Return value

1-2) !f

3-4) (bool) f

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