# Binder Classes
[Function Objects]

Collaboration diagram for Binder Classes:

## Classes

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

## Namespaces

- namespace std::placeholders

## Functions

- template<typename _Functor , typename... _ArgTypes> _Bind< typename
  _Maybe_wrap_member_pointer
  < _Functor >::type(_ArgTypes...)> std::bind (_Functor __f, _ArgTypes...__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)

## Variables

- std::binder1st std::_GLIBCXX_DEPRECATED_ATTR

## 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.

## Function Documentation

template<typename _Functor , typename... _ArgTypes>

_Bind<typename _Maybe_wrap_member_pointer<_Functor>::type(_ArgTypes...)> std::bind | ( | _Functor | __f,
|  | _ArgTypes... | __args |
| ) |  |  | `[inline]`

Function template for std::bind.

Definition at line 1384 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 125 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 160 of file binders.h.

## Variable Documentation

std::binder2nd std::_GLIBCXX_DEPRECATED_ATTR

One of the binder functors.