<!--
    Licensed to the Apache Software  Foundation (ASF) under one or more
    contributor  license agreements.  See  the NOTICE  file distributed
    with  this  work  for  additional information  regarding  copyright
    ownership.   The ASF  licenses this  file to  you under  the Apache
    License, Version  2.0 (the  License); you may  not use  this file
    except in  compliance with the License.   You may obtain  a copy of
    the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the  License is distributed on an  "AS IS" BASIS,
    WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
    implied.   See  the License  for  the  specific language  governing
    permissions and limitations under the License.

    Copyright 1999-2007 Rogue Wave Software, Inc.
-->

<HTML>
<HEAD>
<TITLE>&lt;functional&gt;</TITLE>
<LINK REL=StyleSheet HREF="../rw.css" TYPE="text/css" TITLE="Apache stdcxx Stylesheet"></HEAD>
<BODY BGCOLOR=#FFFFFF>
<A HREF="functionobjects.html"><IMG SRC="images/bprev.gif" WIDTH=20 HEIGHT=21 ALT="Previous file" BORDER=O></A><A HREF="noframes.html"><IMG SRC="images/btop.gif" WIDTH=56 HEIGHT=21 ALT="Top of Document" BORDER=O></A><A HREF="booktoc.html"><IMG SRC="images/btoc.gif" WIDTH=56 HEIGHT=21 ALT="Contents" BORDER=O></A><A HREF="tindex.html"><IMG SRC="images/bindex.gif" WIDTH=56 HEIGHT=21 ALT="Index page" BORDER=O></A><A HREF="generate.html"><IMG SRC="images/bnext.gif" WIDTH=25 HEIGHT=21 ALT="Next file" BORDER=O></A><DIV CLASS="DOCUMENTNAME"><B>Apache C++ Standard Library Reference Guide</B></DIV>
<H2>&lt;functional&gt;</H2>
<P><B>Library:</B>&nbsp;&nbsp;<A HREF="2-4.html">General utilities</A></P>

<PRE><HR><B><I>Header</I></B><HR></PRE>

<UL>
<LI><A HREF="#sec1">Local Index</A></LI>
<LI><A HREF="#sec2">Summary</A></LI>
<LI><A HREF="#sec3">Synopsis</A></LI>
<LI><A HREF="#sec4">See Also</A></LI>
<LI><A HREF="#sec5">Standards Conformance</A></LI>
</UL>
<A NAME="sec1"><H3>Local Index</H3></A>
No Entries
<A NAME="sec2"><H3>Summary</H3></A>
<P>The header <SAMP>&lt;functional&gt;</SAMP> 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.</P>
<A NAME="sec3"><H3>Synopsis</H3></A>

<PRE>namespace std {
  template &lt;class Arg, class Result&gt; 
  struct <SAMP><A HREF="unary-function.html">unary_function</A></SAMP>;
  template &lt;class Arg1, class Arg2, class Result&gt; 
  struct <SAMP><A HREF="binary-function.html">binary_function</A></SAMP>;

  template &lt;class T&gt; struct <SAMP><A HREF="plus.html">plus</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="minus.html">minus</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="multiplies.html">multiplies</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="divides.html">divides</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="modulus.html">modulus</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="negate.html">negate</A></SAMP>;

  template &lt;class T&gt; struct <SAMP><A HREF="equal-to.html">equal_to</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="not-equal-to.html">not_equal_to</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="greater.html">greater</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="less.html">less</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="greater-equal.html">greater_equal</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="less-equal.html">less_equal</A></SAMP>;

  template &lt;class T&gt; struct <SAMP><A HREF="logical-and.html">logical_and</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="logical-or.html">logical_or</A></SAMP>;
  template &lt;class T&gt; struct <SAMP><A HREF="logical-not.html">logical_not</A></SAMP>;

  template &lt;class Predicate&gt; struct <SAMP><A HREF="unary-negate.html">unary_negate</A></SAMP>;
  template &lt;class Predicate&gt;
  unary_negate&lt;Predicate&gt;  <SAMP><A HREF="not1.html">not1</A></SAMP>(const Predicate&amp;);
  template &lt;class Predicate&gt; struct <SAMP><A HREF="binary-negate.html">binary_negate</A></SAMP>;
  template &lt;class Predicate&gt;
  binary_negate&lt;Predicate&gt; <SAMP><A HREF="not2.html">not2</A></SAMP>(const Predicate&amp;);

  template &lt;class Operation&gt;  class <SAMP><A HREF="bind1st.html">binder1st</A></SAMP>;
  template &lt;class Operation, class T&gt;
  binder1st&lt;Operation&gt; <SAMP><A HREF="bind1st.html">bind1st</A></SAMP>(const Operation&amp;, const T&amp;);
  template &lt;class Operation&gt; class <SAMP><A HREF="bind1st.html">binder2nd</A></SAMP>;
  template &lt;class Operation, class T&gt;
  binder2nd&lt;Operation&gt; <SAMP><A HREF="bind1st.html">bind2nd</A></SAMP>(const Operation&amp;, const T&amp;);

  template &lt;class Arg, class Result&gt; 
  class <SAMP><A HREF="pointer-to-unary-function.html">pointer_to_unary_function</A></SAMP>;
  template &lt;class Arg, class Result&gt;
  pointer_to_unary_function&lt;Arg, Result&gt; 
  <SAMP><A HREF="ptr-fun.html">ptr_fun</A></SAMP>(Result (*)(Arg));
  template &lt;class Arg1, class Arg2, class Result&gt;
  class <SAMP><A HREF="pointer-to-binary-function.html">pointer_to_binary_function</A></SAMP>;
  template &lt;class Arg1, class Arg2, class Result&gt;
  pointer_to_binary_function&lt;Arg1, Arg2, Result&gt;
  <SAMP><A HREF="ptr-fun.html">ptr_fun</A></SAMP>(Result (*)(Arg1, Arg2));

  template&lt;class S, class T&gt; class <SAMP>mem_fun_t</SAMP>;
  template&lt;class S, class T, class A&gt; class <SAMP>mem_fun1_t</SAMP>;
  template&lt;class S, class T&gt;
  mem_fun_t&lt;S, T&gt; <SAMP><A HREF="mem-fun.html">mem_fun</A></SAMP>(S (T::*)());
  template&lt;class S, class T, class A&gt;
  mem_fun1_t&lt;S, T, A&gt; mem_fun(S (T::*)(A));
  template&lt;class S, class T&gt; class <SAMP>mem_fun_ref_t</SAMP>;
  template&lt;class S, class T, class A&gt; class <SAMP>mem_fun1_ref_t</SAMP>;
  template&lt;class S, class T&gt;
  mem_fun_ref_t&lt;S, T&gt; <SAMP><A HREF="mem-fun.html">mem_fun_ref</A></SAMP>(S (T::*)());
  template&lt;class S, class T, class A&gt;
  mem_fun1_ref_t&lt;S, T, A&gt; mem_fun_ref(S (T::*)(A));

  template &lt;class S, class T&gt; class const_mem_fun_t;
  template &lt;class S, class T, class A&gt; class const_mem_fun1_t;
  template &lt;class S, class T&gt;
  const_mem_fun_t&lt;S, T&gt; mem_fun(S (T::*)() const);
  template &lt;class S, class T, class A&gt;
  const_mem_fun1_t&lt;S, T, A&gt; mem_fun(S (T::*)(A) const);
  template &lt;class S, class T&gt; class const_mem_fun_ref_t;
  template &lt;class S, class T, class A&gt; 
  class const_mem_fun1_ref_t;
  template &lt;class S, class T&gt;
  const_mem_fun_ref_t&lt;S, T&gt; mem_fun_ref(S (T::*)() const);
  template &lt;class S, class T, class A&gt;
  const_mem_fun1_ref_t&lt;S, T, A&gt; mem_fun_ref(S (T::*)(A)
                                const);
}
</PRE>
<A NAME="sec4"><H3>See Also</H3></A>
<P><B><I><A HREF="binary-function.html">binary_function</A></I></B>, <B><I><A HREF="unary-function.html">unary_function</A></I></B>, <B><I><A HREF="plus.html">plus</A></I></B>, <B><I><A HREF="minus.html">minus</A></I></B>, <B><I><A HREF="multiplies.html">multiplies</A></I></B>, <B><I><A HREF="divides.html">divides</A></I></B>, <B><I><A HREF="modulus.html">modulus</A></I></B>, <B><I><A HREF="negate.html">negate</A></I></B>, <B><I><A HREF="equal-to.html">equal_to</A></I></B>, <B><I><A HREF="not-equal-to.html">not_equal_to</A></I></B>, <B><I><A HREF="greater.html">greater</A></I></B>, <B><I><A HREF="less.html">less</A></I></B>, <B><I><A HREF="greater-equal.html">greater_equal</A></I></B>, <B><I><A HREF="less-equal.html">less_equal</A></I></B>, <B><I><A HREF="logical-and.html">logical_and</A></I></B>, <B><I><A HREF="logical-or.html">logical_or</A></I></B>, <B><I><A HREF="logical-not.html">logical_not</A></I></B>, <A HREF="negators.html">Negators</A>, <B><I><A HREF="unary-negate.html">unary_negate</A></I></B>, <SAMP><A HREF="not1.html">not1()</A></SAMP>, <B><I><A HREF="binary-negate.html">binary_negate</A></I></B>, <SAMP><A HREF="not2.html">not2()</A></SAMP>, <SAMP><A HREF="bind1st.html">bind1st()</A></SAMP><B><I></I></B>, <SAMP><A HREF="bind1st.html">bind2nd()</A></SAMP><B><I>, binder1st, binder2nd</I></B>, <B><I><A HREF="pointer-to-unary-function.html">pointer_to_unary_function</A></I></B>, <SAMP><A HREF="ptr-fun.html">ptr_fun()</A></SAMP>, <B><I><A HREF="pointer-to-binary-function.html">pointer_to_binary_function</A></I></B>, <B><I>mem_fun, mem_fun_ref</I></B></P>
<A NAME="sec5"><H3>Standards Conformance</H3></A>
<P><I>ISO/IEC 14882:1998 -- International Standard for Information Systems --Programming Language C++, Section 20.3</I></P>

<BR>
<HR>
<A HREF="functionobjects.html"><IMG SRC="images/bprev.gif" WIDTH=20 HEIGHT=21 ALT="Previous file" BORDER=O></A><A HREF="noframes.html"><IMG SRC="images/btop.gif" WIDTH=56 HEIGHT=21 ALT="Top of Document" BORDER=O></A><A HREF="booktoc.html"><IMG SRC="images/btoc.gif" WIDTH=56 HEIGHT=21 ALT="Contents" BORDER=O></A><A HREF="tindex.html"><IMG SRC="images/bindex.gif" WIDTH=56 HEIGHT=21 ALT="Index page" BORDER=O></A><A HREF="generate.html"><IMG SRC="images/bnext.gif" WIDTH=20 HEIGHT=21 ALT="Next file" BORDER=O></A>

<!-- Google Analytics tracking code -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
    _uacct = "UA-1775151-1";
    urchinTracker();
</script>
<!-- end of Google Analytics tracking code -->

</BODY>
</HTML>
