Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.






(C++) std::unary_function


std::unary_function is deprecated [2,3].


std::unary_function is an empty class that serves as the base class of a unary functor. A unary functor defines operator(), where operator() takes one argument.


The advantage of using std::unary_function is its (two) typedefs, so that the derived functors fits into more algorithms. Make functors adaptable [1].







Example: MakeAbs


#include <algorithm>
#include <cmath>
#include <functional>
#include <vector>

template <class T> struct Abs : public std::unary_function<T,T>
  const T operator()(const T& x) const { return std::abs(x); }

void MakeAbs(std::vector<int>& v)






Example definition of std::unary_function


Simplified from the GNU ISO C++ Library, version 4.7.2:


template<typename _Arg, typename _Result>
struct unary_function
  typedef _Arg argument_type;  
  typedef _Result result_type;  








  1. Scott Meyers. Effective STL. ISBN: 0-201-74962-9. Item 40: 'Make functor classes adaptable'
  2. Programming Language C++, Library Working Group. 2010-10-06. Document number: N3145=10-0135
  3. Working Draft, Standard for Programming Language C++. 2014-08-22. N3936. Paragraph D.8.2. 'The class templates unary_function and binary_function are deprecated. A program shall not declare specializations of these templates.'






Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.


Valid XHTML 1.0 Strict