Apache C++ Standard Library Reference Guide

## <functional>

Library: General utilities

    Header

- Local Index
- Summary
- Synopsis
- See Also
- Standards Conformance

### Local Index

No Entries

### Summary

The header `<functional>` is part of the General utilities library of the Standard C++ Library. It defines a number of function objects, helper function templates, and function adapters that are important for the effective use of the library.

### Synopsis

    namespace std {
      template <class Arg, class Result>
      struct unary_function;
      template <class Arg1, class Arg2, class Result>
      struct binary_function;

      template <class T> struct plus;
      template <class T> struct minus;
      template <class T> struct multiplies;
      template <class T> struct divides;
      template <class T> struct modulus;
      template <class T> struct negate;

      template <class T> struct equal_to;
      template <class T> struct not_equal_to;
      template <class T> struct greater;
      template <class T> struct less;
      template <class T> struct greater_equal;
      template <class T> struct less_equal;

      template <class T> struct logical_and;
      template <class T> struct logical_or;
      template <class T> struct logical_not;

      template <class Predicate> struct unary_negate;
      template <class Predicate>
      unary_negate<Predicate>  not1(const Predicate&);
      template <class Predicate> struct binary_negate;
      template <class Predicate>
      binary_negate<Predicate> not2(const Predicate&);

      template <class Operation>  class binder1st;
      template <class Operation, class T>
      binder1st<Operation> bind1st(const Operation&, const T&);
      template <class Operation> class binder2nd;
      template <class Operation, class T>
      binder2nd<Operation> bind2nd(const Operation&, const T&);

      template <class Arg, class Result>
      class pointer_to_unary_function;
      template <class Arg, class Result>
      pointer_to_unary_function<Arg, Result>
      ptr_fun(Result (*)(Arg));
      template <class Arg1, class Arg2, class Result>
      class pointer_to_binary_function;
      template <class Arg1, class Arg2, class Result>
      pointer_to_binary_function<Arg1, Arg2, Result>
      ptr_fun(Result (*)(Arg1, Arg2));

      template<class S, class T> class mem_fun_t;
      template<class S, class T, class A> class mem_fun1_t;
      template<class S, class T>
      mem_fun_t<S, T> mem_fun(S (T::*)());
      template<class S, class T, class A>
      mem_fun1_t<S, T, A> mem_fun(S (T::*)(A));
      template<class S, class T> class mem_fun_ref_t;
      template<class S, class T, class A> class mem_fun1_ref_t;
      template<class S, class T>
      mem_fun_ref_t<S, T> mem_fun_ref(S (T::*)());
      template<class S, class T, class A>
      mem_fun1_ref_t<S, T, A> mem_fun_ref(S (T::*)(A));

      template <class S, class T> class const_mem_fun_t;
      template <class S, class T, class A> class const_mem_fun1_t;
      template <class S, class T>
      const_mem_fun_t<S, T> mem_fun(S (T::*)() const);
      template <class S, class T, class A>
      const_mem_fun1_t<S, T, A> mem_fun(S (T::*)(A) const);
      template <class S, class T> class const_mem_fun_ref_t;
      template <class S, class T, class A>
      class const_mem_fun1_ref_t;
      template <class S, class T>
      const_mem_fun_ref_t<S, T> mem_fun_ref(S (T::*)() const);
      template <class S, class T, class A>
      const_mem_fun1_ref_t<S, T, A> mem_fun_ref(S (T::*)(A)
                                    const);
    }

### See Also

binary_function, unary_function, plus, minus, multiplies, divides, modulus, negate, equal_to, not_equal_to, greater, less, greater_equal, less_equal, logical_and, logical_or, logical_not, Negators, unary_negate, `not1()`, binary_negate, `not2()`, `bind1st()`, `bind2nd()`, binder1st, binder2nd, pointer_to_unary_function, `ptr_fun()`, pointer_to_binary_function, mem_fun, mem_fun_ref

### Standards Conformance

ISO/IEC 14882:1998 -- International Standard for Information Systems --Programming Language C++, Section 20.3