libstdc++
Binder Classes
Collaboration diagram for Binder Classes:

Namespaces

namespace  std::placeholders

Classes

struct  std::_Placeholder< _Num >
 The type of placeholder objects defined by libstdc++.

. More...

class  std::binder1st< _Operation >
 One of the binder functors. More...
class  std::binder2nd< _Operation >
 One of the binder functors. More...
struct  std::is_bind_expression< _Tp >
 Determines if the given type _Tp is a function object should be treated as a subexpression when evaluating calls to function objects returned by bind(). [TR1 3.6.1]. More...
struct  std::is_bind_expression< _Bind< _Signature > >
 Class template _Bind is always a bind expression.

. More...

struct  std::is_bind_expression< _Bind_result< _Result, _Signature > >
 Class template _Bind_result is always a bind expression.

. More...

struct  std::is_bind_expression< const _Bind< _Signature > >
 Class template _Bind is always a bind expression.

. More...

struct  std::is_bind_expression< const _Bind_result< _Result, _Signature > >
 Class template _Bind_result is always a bind expression.

. More...

struct  std::is_bind_expression< const volatile _Bind< _Signature > >
 Class template _Bind is always a bind expression.

. More...

struct  std::is_bind_expression< const volatile _Bind_result< _Result, _Signature > >
 Class template _Bind_result is always a bind expression.

. More...

struct  std::is_bind_expression< volatile _Bind< _Signature > >
 Class template _Bind is always a bind expression.

. More...

struct  std::is_bind_expression< volatile _Bind_result< _Result, _Signature > >
 Class template _Bind_result is always a bind expression.

. More...

struct  std::is_placeholder< _Tp >
 Determines if the given type _Tp is a placeholder in a bind() expression and, if so, which placeholder it is. [TR1 3.6.2]. More...
struct  std::is_placeholder< _Placeholder< _Num > >

Functions

template<typename _Func , typename... _BoundArgs>
_Bind_helper< __is_socketlike
< _Func >::value, _Func,
_BoundArgs...>::type 
std::bind (_Func &&__f, _BoundArgs &&...__args)
template<typename _Result , typename _Func , typename... _BoundArgs>
_Bindres_helper< _Result,
_Func, _BoundArgs...>::type 
std::bind (_Func &&__f, _BoundArgs &&...__args)
template<typename _Operation , typename _Tp >
binder1st< _Operation > std::bind1st (const _Operation &__fn, const _Tp &__x)
template<typename _Operation , typename _Tp >
binder2nd< _Operation > std::bind2nd (const _Operation &__fn, const _Tp &__x)

Detailed Description

Binders turn functions/functors with two arguments into functors with a single argument, storing an argument to be applied later. For example, a variable B of type binder1st is constructed from a functor f and an argument x. Later, B's operator() is called with a single argument y. The return value is the value of f(x,y). B can be called with various arguments (y1, y2, ...) and will in turn call f(x,y1), f(x,y2), ...

The function bind1st is provided to save some typing. It takes the function and an argument as parameters, and returns an instance of binder1st.

The type binder2nd and its creator function bind2nd do the same thing, but the stored argument is passed as the second parameter instead of the first, e.g., bind2nd(std::minus<float>(),1.3) will create a functor whose operator() accepts a floating-point number, subtracts 1.3 from it, and returns the result. (If bind1st had been used, the functor would perform 1.3 - x instead.

Creator-wrapper functions like bind1st are intended to be used in calling algorithms. Their return values will be temporary objects. (The goal is to not require you to type names like std::binder1st<std::plus<int>> for declaring a variable to hold the return value from bind1st(std::plus<int>(),5).

These become more useful when combined with the composition functions.

These functions are deprecated in C++11 and can be replaced by std::bind (or std::tr1::bind) which is more powerful and flexible, supporting functions with any number of arguments. Uses of bind1st can be replaced by std::bind(f, x, std::placeholders::_1) and bind2nd by std::bind(f, std::placeholders::_1, x).


Function Documentation

template<typename _Func , typename... _BoundArgs>
_Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type std::bind ( _Func &&  __f,
_BoundArgs &&...  __args 
)
inline

Function template for std::bind.

.

Definition at line 1521 of file functional.

Referenced by std::is_permutation().

template<typename _Result , typename _Func , typename... _BoundArgs>
_Bindres_helper<_Result, _Func, _BoundArgs...>::type std::bind ( _Func &&  __f,
_BoundArgs &&...  __args 
)
inline

Function template for std::bind<R>.

.

Definition at line 1548 of file functional.

template<typename _Operation , typename _Tp >
binder1st<_Operation> std::bind1st ( const _Operation &  __fn,
const _Tp &  __x 
)
inline

One of the binder functors.

Definition at line 132 of file binders.h.

template<typename _Operation , typename _Tp >
binder2nd<_Operation> std::bind2nd ( const _Operation &  __fn,
const _Tp &  __x 
)
inline

One of the binder functors.

Definition at line 167 of file binders.h.