std::bind1st,std::bind2nd (3) Linux Manual Page
std::bind1st,std::bind2nd – std::bind1st,std::bind2nd
Synopsis
Defined in header <functional>
template< class F, class T > (1) (deprecated in C++11)
std::binder1st<F> bind1st( const F& f, const T& x ); (removed in C++17)
template< class F, class T > (2) (deprecated in C++11)
std::binder2nd<F> bind2nd( const F& f, const T& x ); (removed in C++17)
Binds a given argument x to a first or second parameter of the given binary function object f. That is, stores x within the resulting wrapper, which, if called, passes x as the first or the second parameter of f.
1) Binds the first argument of f to x. Effectively calls std::binder1st<F>(f, typename F::first_argument_type(x)).
2) Binds the second argument of f to x. Effectively calls std::binder2nd<F>(f, typename F::second_argument_type(x)).
Parameters
f – pointer to a function to bind an argument to
x – argument to bind to f
Return value
A function object wrapping f and x.
Exceptions
(none)
Example
// Run this code
#include <iostream>
#include <algorithm>
#include <functional>
#include <cmath>
#include <vector>
int main()
{
std::vector<double> a = {0, 30, 45, 60, 90, 180};
std::vector<double> r(a.size());
double pi = std::acos(-1);
std::transform(a.begin(), a.end(), r.begin(),
std::bind1st(std::multiplies<double>(), pi / 180.));
// equivalent lambda: [pi](double a){ return a*pi/180.; });
for (size_t n = 0; n < a.size(); ++n)
std::cout << a[n] << " deg = " << r[n] << " rad\n";
}
Output:
See also
binder1st function object holding a binary function and one of its arguments
binder2nd (class template)
(deprecated in C++11)(removed in C++17)
