binder1stis constructed from a functor
fand an argument
x. Later, B's
operator()is called with a single argument
y. The return value is the value of
Bcan be "called" with various arguments (y1, y2, ...) and will in turn call
bind1st is provided to save some typing. It takes the function and an argument as parameters, and returns an instance of
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
These become more useful when combined with the composition functions.
|binder1st<_Operation> std::bind1st||(||const _Operation &||__fn,|
|const _Tp &||__x|
|binder2nd<_Operation> std::bind2nd||(||const _Operation &||__fn,|
|const _Tp &||__x|
A simple smart pointer providing strict ownership semantics.
One of the binder functors.
All the auto_ptr_ref stuff should happen behind the scenes.
The Standard says:
auto_ptrowns the object it holds a pointer to. Copying an
auto_ptrcopies the pointer and transfers ownership to the destination. If more than one
auto_ptrowns the same object at the same time the behavior of the program is undefined.
The uses ofQuoted from [20.4.5]/3.
auto_ptrinclude providing temporary exception-safety for dynamically allocated memory, passing ownership of dynamically allocated memory to a function, and returning dynamically allocated memory from a function.
auto_ptrdoes not meet the CopyConstructible and Assignable requirements for Standard Library container elements and thus instantiating a Standard Library container with an
auto_ptrresults in undefined behavior.
Good examples of what can and cannot be done with auto_ptr can be found in the libstdc++ testsuite.
_GLIBCXX_RESOLVE_LIB_DEFECTS 127. auto_ptr<> conversion issues These resolutions have all been incorporated.