unary_function<> Structure
Collapse the table of content
Expand the table of content
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

unary_function<> Structure 

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;


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

// 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>
  float value;
  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;


Value after * is 20.000000
Value after minus is 13.000000

Header: <functional>

© 2015 Microsoft