<HTML>
<HEAD>
<TITLE>unary_negate</TITLE>
<LINK REL=StyleSheet HREF="../rw.css" TYPE="text/css" TITLE="Apache stdcxx Stylesheet"></HEAD>
<BODY BGCOLOR=#FFFFFF>
<A HREF="unary-function.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="underflow-error.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>unary_negate</H2>
<P><B>Library:</B>&nbsp;&nbsp;<A HREF="2-4.html">General utilities</A></P>

<PRE><HR><B><I>unary_negate</I></B> <IMG SRC="images/inherits.gif"> <B><I><A HREF="unary-function.html">unary_function</A></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">Description</A></LI>
<LI><A HREF="#sec5">Interface</A></LI>
<LI><A HREF="#sec6">Constructors</A></LI>
<LI><A HREF="#sec7">Operators</A></LI>
<LI><A HREF="#sec8">See Also</A></LI>
<LI><A HREF="#sec9">Standards Conformance</A></LI>
</UL>
<A NAME="sec1"><H3>Local Index</H3></A>
<H4>Members</H4>
<UL><TABLE CELLPADDING=3>
<TR><TD VALIGN=top>
<A HREF="#idx1253">operator()()</A><BR>
</TD>
<TD VALIGN=top><A HREF="#idx1252">unary_negate()</A><BR>
</TD>
<TD VALIGN=top></TD></TR>
</TABLE></UL>

<A NAME="sec2"><H3>Summary</H3></A>
<P>A function object that returns the complement of the result of its unary predicate </P>
<A NAME="sec3"><H3>Synopsis</H3></A>

<PRE>#include &lt;functional&gt;

namespace std {
  template &lt;class Predicate&gt;
  class unary_negate;
}
</PRE>
<A NAME="sec4"><H3>Description</H3></A>
<P><B><I>unary_negate</I></B> is a function object used as a return type for the function adapter <SAMP><A HREF="not1.html">not1()</A></SAMP>. <SAMP>not1()</SAMP> is a function adapter, known as a negator, that takes a unary predicate function object as its argument and returns a unary predicate function object that is the complement of the original. </P>
<P>Note that <SAMP><A HREF="not1.html">not1()</A></SAMP> works only with function objects that are defined as subclasses of the class <B><I><A HREF="unary-function.html">unary_function</A></I></B>.</P>
<A NAME="sec5"><H3>Interface</H3></A>

<UL><PRE>namespace std {

  template &lt;class Predicate&gt;
  class unary_negate : public
     unary_function&lt;typename Predicate::argument_type, bool&gt; {

   public:
   explicit unary_negate(const Predicate&amp;);
   bool operator()(const typename
                    Predicate::argument_type&amp;) const;
  };
}
</PRE></UL>
<A NAME="sec6"><H3>Constructors</H3></A>

<A NAME="idx1252"></A><PRE>explicit 
<B>unary_negate</B>(const Predicate&amp; pred);</PRE>
<UL>
<P>Constructs a <B><I>unary_negate</I></B> object from predicate <SAMP>pred</SAMP>.</P>
</UL>

<A NAME="sec7"><H3>Operators</H3></A>

<A NAME="idx1253"></A><PRE>bool 
<B>operator()</B>(const typename Predicate::argument_type&amp; x)
           const;</PRE>
<UL>
<P>Returns the result of <SAMP>unary_negate&lt;predicate&gt;(pred)</SAMP>.</P>
</UL>

<A NAME="sec8"><H3>See Also</H3></A>
<P><SAMP><A HREF="not1.html">not1()</A></SAMP>, <SAMP><A HREF="not2.html">not2()</A></SAMP>, <B><I><A HREF="unary-function.html">unary_function</A></I></B>, <B><I><A HREF="binary-negate.html">binary_negate</A></I></B></P>
<A NAME="sec9"><H3>Standards Conformance</H3></A>
<P><I>ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, 20.3.5</I></P>

<BR>
<HR>
<A HREF="unary-function.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="underflow-error.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>
