|
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.
| binder1st<_Operation> std::bind1st | ( | const _Operation & | __fn, | |
| const _Tp & | __x | |||
| ) | [inline] |
| binder2nd<_Operation> std::bind2nd | ( | const _Operation & | __fn, | |
| const _Tp & | __x | |||
| ) | [inline] |
A simple smart pointer providing strict ownership semantics.
One of the binder functors.
A wrapper class to provide auto_ptr with reference semantics. For example, an auto_ptr can be assigned (or constructed from) the result of a function which returns an auto_ptr by value.
All the auto_ptr_ref stuff should happen behind the scenes.
The Standard says:
Anauto_ptrowns the object it holds a pointer to. Copying anauto_ptrcopies the pointer and transfers ownership to the destination. If more than oneauto_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 anauto_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.
1.5.8