Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Illustrates how to use the unary_function<> structure in Visual C++.
template<class _A, class _R>
struct unary_function
{
typedef _A Argument_Type;
typedef _R Result_Type;
};
Remarks
Note
The class/parameter names in the prototype do not match the version in the header file. Some have been modified to improve readability.
unary_function is used as a base class to better define operator functions in the following format: Result_Type classname::operatorX(Argument_Type).
Example
// unary_function.cpp
// compile with: /EHsc
//
// Structure used:
// unary_function<int, float> - allows us
// to write operator functions accepting an
// integer and returning floats.
////////////////////////////////////////////
#include <functional>
#include <iostream>
using namespace std ;
/* derive class from unary_function in order to use it */
class unary_test : public unary_function<int,float>
{
public:
float value;
unary_test(){value=10.0;}
unary_test(float x){value=x;}
result_type operator*(argument_type x);
result_type operator-(argument_type x);
};
/* You can now easily create operators that accept */
/* an int and return a float. */
unary_test::result_type unary_test::operator*(unary_test::argument_type x)
{
float tmp = value * (float)x;
cout << "Value after * is " << tmp << endl ;
return value;
}
unary_test::result_type unary_test::operator-(unary_test::argument_type x)
{
float tmp = value - (float)x;
cout << "Value after minus is " << tmp << endl ;
return tmp;
}
int main(void)
{
unary_test item;
unary_test item2(18.0);
cout << "Begin" << endl ;
cout.setf(ios::fixed) ;
item = item * 2;
item2 = item2 - 5;
}
Begin Value after * is 20.000000 Value after minus is 13.000000
Requirements
Header: <functional>