Imported Upstream version 1.57.0
[platform/upstream/boost.git] / doc / html / boost / function.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Class template function</title>
5 <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
7 <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
8 <link rel="up" href="../function/reference.html#header.boost.function_hpp" title="Header &lt;boost/function.hpp&gt;">
9 <link rel="prev" href="functionN/sig.html" title="Struct template sig">
10 <link rel="next" href="function/sig.html" title="Struct template sig">
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
15 <td align="center"><a href="../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../more/index.htm">More</a></td>
20 </tr></table>
21 <hr>
22 <div class="spirit-nav">
23 <a accesskey="p" href="functionN/sig.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../function/reference.html#header.boost.function_hpp"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="function/sig.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="refentry">
26 <a name="boost.function"></a><div class="titlepage"></div>
27 <div class="refnamediv">
28 <h2><span class="refentrytitle">Class template function</span></h2>
29 <p>boost::function &#8212; A generalized function pointer that can be used for
30     callbacks or wrapping function objects.</p>
31 </div>
32 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
33 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../function/reference.html#header.boost.function_hpp" title="Header &lt;boost/function.hpp&gt;">boost/function.hpp</a>&gt;
34
35 </span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">&gt;</span> 
36 <span class="keyword">class</span> <a class="link" href="function.html" title="Class template function">function</a> <span class="special">:</span> <span class="keyword">public</span> <a class="link" href="functionN.html" title="Class template functionN">functionN</a><span class="special">&lt;</span><span class="identifier">R</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,</span> <span class="identifier">T2</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">TN</span><span class="special">&gt;</span> <span class="special">{</span>
37 <span class="keyword">public</span><span class="special">:</span>
38   <span class="comment">// types</span>
39   <span class="keyword">typedef</span> <span class="identifier">R</span>  <a name="boost.function.result_type"></a><span class="identifier">result_type</span><span class="special">;</span>         
40   <span class="keyword">typedef</span> <span class="identifier">T1</span> <a name="boost.function.argument_type"></a><span class="identifier">argument_type</span><span class="special">;</span>         <span class="comment">// If N == 1</span>
41   <span class="keyword">typedef</span> <span class="identifier">T1</span> <a name="boost.function.first_argument_type"></a><span class="identifier">first_argument_type</span><span class="special">;</span>   <span class="comment">// If N == 2</span>
42   <span class="keyword">typedef</span> <span class="identifier">T2</span> <a name="boost.function.second_argument_type"></a><span class="identifier">second_argument_type</span><span class="special">;</span>  <span class="comment">// If N == 2</span>
43   <span class="keyword">typedef</span> <span class="identifier">T1</span> <a name="boost.function.arg1_type"></a><span class="identifier">arg1_type</span><span class="special">;</span>           
44   <span class="keyword">typedef</span> <span class="identifier">T2</span> <a name="boost.function.arg2_type"></a><span class="identifier">arg2_type</span><span class="special">;</span>           
45      .
46      .
47      .
48   <span class="keyword">typedef</span> <span class="identifier">TN</span> <a name="boost.function.argN_type"></a><span class="identifier">argN_type</span><span class="special">;</span>           
49
50   <span class="comment">// static constants</span>
51   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">arity</span> = <span class="identifier">N</span><span class="special">;</span>
52
53   <span class="comment">// member classes/structs/unions</span>
54
55   <span class="comment">// <a class="link" href="../lambda.html" title="Chapter&#160;16.&#160;Boost.Lambda">Lambda</a> library support</span>
56   <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Args<span class="special">&gt;</span> 
57   <span class="keyword">struct</span> <a class="link" href="function/sig.html" title="Struct template sig">sig</a> <span class="special">{</span>
58     <span class="comment">// types</span>
59     <span class="keyword">typedef</span> <span class="identifier">result_type</span> <a class="link" href="function/sig.html#boost.function.sig.type"><span class="identifier">type</span></a><span class="special">;</span>
60   <span class="special">}</span><span class="special">;</span>
61
62   <span class="comment">// <a class="link" href="function.html#boost.functionconstruct-copy-destruct">construct/copy/destruct</a></span>
63   <a class="link" href="function.html#idp75737696-bb"><span class="identifier">function</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
64   <a class="link" href="function.html#idp39655760-bb"><span class="identifier">function</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="functionN.html" title="Class template functionN">functionN</a><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
65   <a class="link" href="function.html#idp106826448-bb"><span class="identifier">function</span></a><span class="special">(</span><a class="link" href="functionN.html" title="Class template functionN">functionN</a><span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
66   <a class="link" href="function.html#idp110867712-bb"><span class="identifier">function</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
67   <a class="link" href="function.html#idp42720176-bb"><span class="identifier">function</span></a><span class="special">(</span><a class="link" href="function.html" title="Class template function">function</a><span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
68   <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> F<span class="special">&gt;</span> <a class="link" href="function.html#idp40296688-bb"><span class="identifier">function</span></a><span class="special">(</span><span class="identifier">F</span><span class="special">)</span><span class="special">;</span>
69   <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> F<span class="special">,</span> <span class="keyword">typename</span> Allocator<span class="special">&gt;</span> <a class="link" href="function.html#idp40994480-bb"><span class="identifier">function</span></a><span class="special">(</span><span class="identifier">F</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">)</span><span class="special">;</span>
70   function&amp; <a class="link" href="function.html#idp69909120-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="functionN.html" title="Class template functionN">functionN</a><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
71   function&amp; <a class="link" href="function.html#idp37708288-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><a class="link" href="functionN.html" title="Class template functionN">functionN</a><span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
72   function&amp; <a class="link" href="function.html#idp38571792-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
73   function&amp; <a class="link" href="function.html#idp105085072-bb"><span class="keyword">operator</span><span class="special">=</span></a><span class="special">(</span><a class="link" href="function.html" title="Class template function">function</a><span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
74   <a class="link" href="function.html#idp45860512-bb"><span class="special">~</span><span class="identifier">function</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
75
76   <span class="comment">// <a class="link" href="function.html#idp108302096-bb">modifiers</a></span>
77   <span class="keyword">void</span> <a class="link" href="function.html#idp108302656-bb"><span class="identifier">swap</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
78   <span class="keyword">void</span> <a class="link" href="function.html#idp72870112-bb"><span class="identifier">clear</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
79
80   <span class="comment">// <a class="link" href="function.html#idp99731696-bb">capacity</a></span>
81   <span class="keyword">bool</span> <a class="link" href="function.html#idp39557232-bb"><span class="identifier">empty</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
82   <a class="link" href="function.html#idp41154480-bb"><span class="keyword">operator</span> <span class="identifier">safe_bool</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
83   <span class="keyword">bool</span> <a class="link" href="function.html#idp76193136-bb"><span class="keyword">operator</span><span class="special">!</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
84
85   <span class="comment">// <a class="link" href="function.html#idp69032368-bb">target access</a></span>
86   <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Functor<span class="special">&gt;</span> <span class="identifier">Functor</span><span class="special">*</span> <a class="link" href="function.html#idp113597808-bb"><span class="identifier">target</span></a><span class="special">(</span><span class="special">)</span><span class="special">;</span>
87   <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Functor<span class="special">&gt;</span> <span class="keyword">const</span> <span class="identifier">Functor</span><span class="special">*</span> <a class="link" href="function.html#idp37917680-bb"><span class="identifier">target</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
88   <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Functor<span class="special">&gt;</span> <span class="keyword">bool</span> <a class="link" href="function.html#idp44257488-bb"><span class="identifier">contains</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Functor</span><span class="special">&amp;</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
89   <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">type_info</span><span class="special">&amp;</span> <a class="link" href="function.html#idp46276608-bb"><span class="identifier">target_type</span></a><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
90
91   <span class="comment">// <a class="link" href="function.html#idp55139648-bb">invocation</a></span>
92   <span class="identifier">result_type</span> <a class="link" href="function.html#idp55140176-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="identifier">arg1_type</span><span class="special">,</span> <span class="identifier">arg2_type</span><span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">argN_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
93 <span class="special">}</span><span class="special">;</span>
94
95 <span class="comment">// <a class="link" href="function.html#idp111166064-bb">specialized algorithms</a></span>
96 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">&gt;</span> 
97   <span class="keyword">void</span> <a class="link" href="function.html#boost.function.swap_idp76190448"><span class="identifier">swap</span></a><span class="special">(</span><a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">,</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
98
99 <span class="comment">// <a class="link" href="function.html#idp48579440-bb">comparison operators</a></span>
100 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
101   <span class="keyword">bool</span> <a class="link" href="function.html#idp113383552-bb"><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">,</span> <span class="identifier">Functor</span><span class="special">)</span><span class="special">;</span>
102 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
103   <span class="keyword">bool</span> <a class="link" href="function.html#idp95785712-bb"><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span><span class="identifier">Functor</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
104 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
105   <span class="keyword">bool</span> <a class="link" href="function.html#idp37641488-bb"><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">,</span> reference_wrapper<span class="special">&lt;</span><span class="identifier">Functor</span><span class="special">&gt;</span><span class="special">)</span><span class="special">;</span>
106 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
107   <span class="keyword">bool</span> <a class="link" href="function.html#idp105237024-bb"><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span>reference_wrapper<span class="special">&lt;</span><span class="identifier">Functor</span><span class="special">&gt;</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
108 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature1<span class="special">,</span> <span class="keyword">typename</span> Signature2<span class="special">&gt;</span> 
109   <span class="keyword">void</span> <a class="link" href="function.html#idp69032896-bb"><span class="keyword">operator</span><span class="special">==</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature1</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature2</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
110 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
111   <span class="keyword">bool</span> <a class="link" href="function.html#idp47556672-bb"><span class="keyword">operator</span><span class="special">!=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">,</span> <span class="identifier">Functor</span><span class="special">)</span><span class="special">;</span>
112 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
113   <span class="keyword">bool</span> <a class="link" href="function.html#idp101036032-bb"><span class="keyword">operator</span><span class="special">!=</span></a><span class="special">(</span><span class="identifier">Functor</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
114 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
115   <span class="keyword">bool</span> <a class="link" href="function.html#idp54996816-bb"><span class="keyword">operator</span><span class="special">!=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">,</span> reference_wrapper<span class="special">&lt;</span><span class="identifier">Functor</span><span class="special">&gt;</span><span class="special">)</span><span class="special">;</span>
116 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
117   <span class="keyword">bool</span> <a class="link" href="function.html#idp110874944-bb"><span class="keyword">operator</span><span class="special">!=</span></a><span class="special">(</span>reference_wrapper<span class="special">&lt;</span><span class="identifier">Functor</span><span class="special">&gt;</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
118 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature1<span class="special">,</span> <span class="keyword">typename</span> Signature2<span class="special">&gt;</span> 
119   <span class="keyword">void</span> <a class="link" href="function.html#idp99861584-bb"><span class="keyword">operator</span><span class="special">!=</span></a><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature1</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature2</span><span class="special">&gt;</span><span class="special">&amp;</span><span class="special">)</span><span class="special">;</span></pre></div>
120 <div class="refsect1">
121 <a name="idp210007408"></a><h2>Description</h2>
122 <p>Class template <a class="link" href="function.html" title="Class template function">function</a> is a thin
123       wrapper around the numbered class templates <a class="link" href="functionN.html" title="Class template functionN">function0</a>, <a class="link" href="functionN.html" title="Class template functionN">function1</a>, etc. It accepts a
124       function type with N arguments and will will derive from
125       <a class="link" href="functionN.html" title="Class template functionN">functionN</a> instantiated with the arguments
126       it receives.</p>
127 <p>The semantics of all operations in class template
128       <a class="link" href="function.html" title="Class template function">function</a> are equivalent to that of the
129       underlying <a class="link" href="functionN.html" title="Class template functionN">functionN</a> object, although
130       additional member functions are required to allow proper copy
131       construction and copy assignment of function objects.</p>
132 <div class="refsect2">
133 <a name="idp210014112"></a><h3>Template Parameters</h3>
134 <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
135 <pre class="literallayout"><span class="keyword">typename</span> Signature</pre>
136 <p></p>
137 </li></ol></div>
138 </div>
139 <div class="refsect2">
140 <a name="idp210016976"></a><h3>
141 <a name="boost.functionconstruct-copy-destruct"></a><code class="computeroutput">function</code> 
142         public
143        construct/copy/destruct</h3>
144 <div class="orderedlist"><ol class="orderedlist" type="1">
145 <li class="listitem">
146 <pre class="literallayout"><a name="idp75737696-bb"></a><span class="identifier">function</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
147 <div class="variablelist"><table border="0" class="variablelist compact">
148 <colgroup>
149 <col align="left" valign="top">
150 <col>
151 </colgroup>
152 <tbody>
153 <tr>
154 <td><p><span class="term">Postconditions:</span></p></td>
155 <td><code class="computeroutput">this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code></td>
156 </tr>
157 <tr>
158 <td><p><span class="term">Throws:</span></p></td>
159 <td>Will not throw.</td>
160 </tr>
161 </tbody>
162 </table></div>
163 </li>
164 <li class="listitem">
165 <pre class="literallayout"><a name="idp39655760-bb"></a><span class="identifier">function</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="functionN.html" title="Class template functionN">functionN</a><span class="special">&amp;</span> f<span class="special">)</span><span class="special">;</span></pre>
166 <div class="variablelist"><table border="0" class="variablelist compact">
167 <colgroup>
168 <col align="left" valign="top">
169 <col>
170 </colgroup>
171 <tbody>
172 <tr>
173 <td><p><span class="term">Postconditions:</span></p></td>
174 <td>Contains a copy of the <code class="computeroutput">f</code>'s target, if it has one, or is empty if <code class="computeroutput">f.<a class="link" href="function.html#idp39557232-bb">empty</a>()</code>.</td>
175 </tr>
176 <tr>
177 <td><p><span class="term">Throws:</span></p></td>
178 <td>Will not throw unless copying the target of <code class="computeroutput">f</code> throws.</td>
179 </tr>
180 </tbody>
181 </table></div>
182 </li>
183 <li class="listitem">
184 <pre class="literallayout"><a name="idp106826448-bb"></a><span class="identifier">function</span><span class="special">(</span><a class="link" href="functionN.html" title="Class template functionN">functionN</a><span class="special">&amp;&amp;</span> f<span class="special">)</span><span class="special">;</span></pre>
185 <div class="variablelist"><table border="0" class="variablelist compact">
186 <colgroup>
187 <col align="left" valign="top">
188 <col>
189 </colgroup>
190 <tbody>
191 <tr>
192 <td><p><span class="term">Requires:</span></p></td>
193 <td>C++11 compatible compiler.</td>
194 </tr>
195 <tr>
196 <td><p><span class="term">Postconditions:</span></p></td>
197 <td>Moves the value from <code class="computeroutput">f</code> to <code class="computeroutput">*this</code>. If the argument has its function object allocated on the heap, its buffer will be assigned to <code class="computeroutput">*this</code> leaving argument empty.</td>
198 </tr>
199 <tr>
200 <td><p><span class="term">Throws:</span></p></td>
201 <td>Will not throw unless argument has its function object allocated not on the heap and copying the target of <code class="computeroutput">f</code> throws.</td>
202 </tr>
203 </tbody>
204 </table></div>
205 </li>
206 <li class="listitem">
207 <pre class="literallayout"><a name="idp110867712-bb"></a><span class="identifier">function</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&amp;</span> f<span class="special">)</span><span class="special">;</span></pre>
208 <div class="variablelist"><table border="0" class="variablelist compact">
209 <colgroup>
210 <col align="left" valign="top">
211 <col>
212 </colgroup>
213 <tbody>
214 <tr>
215 <td><p><span class="term">Postconditions:</span></p></td>
216 <td>Contains a copy of the <code class="computeroutput">f</code>'s target, if it has one, or is empty if <code class="computeroutput">f.<a class="link" href="function.html#idp39557232-bb">empty</a>()</code>.</td>
217 </tr>
218 <tr>
219 <td><p><span class="term">Throws:</span></p></td>
220 <td>Will not throw unless copying the target of <code class="computeroutput">f</code> throws.</td>
221 </tr>
222 </tbody>
223 </table></div>
224 </li>
225 <li class="listitem">
226 <pre class="literallayout"><a name="idp42720176-bb"></a><span class="identifier">function</span><span class="special">(</span><a class="link" href="function.html" title="Class template function">function</a><span class="special">&amp;&amp;</span> f<span class="special">)</span><span class="special">;</span></pre>
227 <div class="variablelist"><table border="0" class="variablelist compact">
228 <colgroup>
229 <col align="left" valign="top">
230 <col>
231 </colgroup>
232 <tbody>
233 <tr>
234 <td><p><span class="term">Requires:</span></p></td>
235 <td>C++11 compatible compiler.</td>
236 </tr>
237 <tr>
238 <td><p><span class="term">Postconditions:</span></p></td>
239 <td>Moves the value from <code class="computeroutput">f</code> to <code class="computeroutput">*this</code>. If the argument has its function object allocated on the heap, its buffer will be assigned to <code class="computeroutput">*this</code> leaving argument empty.</td>
240 </tr>
241 <tr>
242 <td><p><span class="term">Throws:</span></p></td>
243 <td>Will not throw unless argument has its function object allocated not on the heap and copying the target of <code class="computeroutput">f</code> throws.</td>
244 </tr>
245 </tbody>
246 </table></div>
247 </li>
248 <li class="listitem">
249 <pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> F<span class="special">&gt;</span> <a name="idp40296688-bb"></a><span class="identifier">function</span><span class="special">(</span><span class="identifier">F</span> f<span class="special">)</span><span class="special">;</span></pre>
250 <div class="variablelist"><table border="0" class="variablelist compact">
251 <colgroup>
252 <col align="left" valign="top">
253 <col>
254 </colgroup>
255 <tbody>
256 <tr>
257 <td><p><span class="term">Requires:</span></p></td>
258 <td>F is a function object Callable from <code class="computeroutput">this</code>.</td>
259 </tr>
260 <tr>
261 <td><p><span class="term">Postconditions:</span></p></td>
262 <td>
263 <code class="computeroutput">*this</code> targets a copy of <code class="computeroutput">f</code> if <code class="computeroutput">f</code> is nonempty, or <code class="computeroutput">this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code> if <code class="computeroutput">f</code> is empty.</td>
264 </tr>
265 </tbody>
266 </table></div>
267 </li>
268 <li class="listitem">
269 <pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> F<span class="special">,</span> <span class="keyword">typename</span> Allocator<span class="special">&gt;</span> <a name="idp40994480-bb"></a><span class="identifier">function</span><span class="special">(</span><span class="identifier">F</span> f<span class="special">,</span> <span class="identifier">Allocator</span> alloc<span class="special">)</span><span class="special">;</span></pre>
270 <div class="variablelist"><table border="0" class="variablelist compact">
271 <colgroup>
272 <col align="left" valign="top">
273 <col>
274 </colgroup>
275 <tbody>
276 <tr>
277 <td><p><span class="term">Requires:</span></p></td>
278 <td>F is a function object Callable from <code class="computeroutput">this</code>, Allocator is an allocator. The copy constructor and destructor of Allocator shall not throw.</td>
279 </tr>
280 <tr>
281 <td><p><span class="term">Postconditions:</span></p></td>
282 <td>
283 <code class="computeroutput">*this</code> targets a copy of <code class="computeroutput">f</code> if <code class="computeroutput">f</code> is nonempty, or <code class="computeroutput">this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code> if <code class="computeroutput">f</code> is empty.</td>
284 </tr>
285 <tr>
286 <td><p><span class="term">Effects:</span></p></td>
287 <td>If memory allocation is required, the given allocator (or a copy of it) will be used to allocate that memory.</td>
288 </tr>
289 </tbody>
290 </table></div>
291 </li>
292 <li class="listitem">
293 <pre class="literallayout">function&amp; <a name="idp69909120-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="functionN.html" title="Class template functionN">functionN</a><span class="special">&amp;</span> f<span class="special">)</span><span class="special">;</span></pre>
294 <div class="variablelist"><table border="0" class="variablelist compact">
295 <colgroup>
296 <col align="left" valign="top">
297 <col>
298 </colgroup>
299 <tbody><tr>
300 <td><p><span class="term">Postconditions:</span></p></td>
301 <td>If copy construction does not throw, <code class="computeroutput">*this</code> targets a copy of <code class="computeroutput">f</code>'s target, if it has one, or is empty if <code class="computeroutput">f.<a class="link" href="function.html#idp39557232-bb">empty</a>()</code>. If copy construction does throw, <code class="computeroutput">this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code>.</td>
302 </tr></tbody>
303 </table></div>
304 </li>
305 <li class="listitem">
306 <pre class="literallayout">function&amp; <a name="idp37708288-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><a class="link" href="functionN.html" title="Class template functionN">functionN</a><span class="special">&amp;&amp;</span> f<span class="special">)</span><span class="special">;</span></pre>
307 <div class="variablelist"><table border="0" class="variablelist compact">
308 <colgroup>
309 <col align="left" valign="top">
310 <col>
311 </colgroup>
312 <tbody>
313 <tr>
314 <td><p><span class="term">Requires:</span></p></td>
315 <td>C++11 compatible compiler.</td>
316 </tr>
317 <tr>
318 <td><p><span class="term">Postconditions:</span></p></td>
319 <td>Moves the value from <code class="computeroutput">f</code> to <code class="computeroutput">*this</code>. If the argument has its function object allocated on the heap, its buffer will be assigned to <code class="computeroutput">*this</code> leaving argument empty.</td>
320 </tr>
321 <tr>
322 <td><p><span class="term">Throws:</span></p></td>
323 <td>Will not throw unless argument has its function object allocated not on the heap and copying the target of <code class="computeroutput">f</code> throws.</td>
324 </tr>
325 </tbody>
326 </table></div>
327 </li>
328 <li class="listitem">
329 <pre class="literallayout">function&amp; <a name="idp38571792-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&amp;</span> f<span class="special">)</span><span class="special">;</span></pre>
330 <div class="variablelist"><table border="0" class="variablelist compact">
331 <colgroup>
332 <col align="left" valign="top">
333 <col>
334 </colgroup>
335 <tbody>
336 <tr>
337 <td><p><span class="term">Postconditions:</span></p></td>
338 <td>If copy construction of the target of <code class="computeroutput">f</code> does not throw, <code class="computeroutput">*this</code> targets a copy of <code class="computeroutput">f</code>'s target, if it has one, or is empty if <code class="computeroutput">f.<a class="link" href="function.html#idp39557232-bb">empty</a>()</code>. </td>
339 </tr>
340 <tr>
341 <td><p><span class="term">Throws:</span></p></td>
342 <td>Will not throw when the target of <code class="computeroutput">f</code> is a stateless function object or a reference to the function object. If copy construction does throw, <code class="computeroutput">this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code>.</td>
343 </tr>
344 </tbody>
345 </table></div>
346 </li>
347 <li class="listitem">
348 <pre class="literallayout">function&amp; <a name="idp105085072-bb"></a><span class="keyword">operator</span><span class="special">=</span><span class="special">(</span><a class="link" href="function.html" title="Class template function">function</a><span class="special">&amp;&amp;</span> f<span class="special">)</span><span class="special">;</span></pre>
349 <div class="variablelist"><table border="0" class="variablelist compact">
350 <colgroup>
351 <col align="left" valign="top">
352 <col>
353 </colgroup>
354 <tbody>
355 <tr>
356 <td><p><span class="term">Requires:</span></p></td>
357 <td>C++11 compatible compiler.</td>
358 </tr>
359 <tr>
360 <td><p><span class="term">Postconditions:</span></p></td>
361 <td>Moves the value from <code class="computeroutput">f</code> to <code class="computeroutput">*this</code>. If the argument has its function object allocated on the heap, its buffer will be assigned to <code class="computeroutput">*this</code> leaving argument empty.</td>
362 </tr>
363 <tr>
364 <td><p><span class="term">Throws:</span></p></td>
365 <td>Will not throw unless argument has its function object allocated not on the heap and copying the target of <code class="computeroutput">f</code> throws.</td>
366 </tr>
367 </tbody>
368 </table></div>
369 </li>
370 <li class="listitem">
371 <pre class="literallayout"><a name="idp45860512-bb"></a><span class="special">~</span><span class="identifier">function</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
372 <div class="variablelist"><table border="0" class="variablelist compact">
373 <colgroup>
374 <col align="left" valign="top">
375 <col>
376 </colgroup>
377 <tbody><tr>
378 <td><p><span class="term">Effects:</span></p></td>
379 <td>If <code class="computeroutput">!this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code>, destroys the target of <code class="computeroutput">this</code>.</td>
380 </tr></tbody>
381 </table></div>
382 </li>
383 </ol></div>
384 </div>
385 <div class="refsect2">
386 <a name="idp210159696"></a><h3>
387 <a name="idp108302096-bb"></a><code class="computeroutput">function</code> modifiers</h3>
388 <div class="orderedlist"><ol class="orderedlist" type="1">
389 <li class="listitem">
390 <pre class="literallayout"><span class="keyword">void</span> <a name="idp108302656-bb"></a><span class="identifier">swap</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&amp;</span> f<span class="special">)</span><span class="special">;</span></pre>
391 <div class="variablelist"><table border="0" class="variablelist compact">
392 <colgroup>
393 <col align="left" valign="top">
394 <col>
395 </colgroup>
396 <tbody><tr>
397 <td><p><span class="term">Effects:</span></p></td>
398 <td>Interchanges the targets of <code class="computeroutput">*this</code> and <code class="computeroutput">f</code>.</td>
399 </tr></tbody>
400 </table></div>
401 </li>
402 <li class="listitem">
403 <pre class="literallayout"><span class="keyword">void</span> <a name="idp72870112-bb"></a><span class="identifier">clear</span><span class="special">(</span><span class="special">)</span><span class="special">;</span></pre>
404 <div class="variablelist"><table border="0" class="variablelist compact">
405 <colgroup>
406 <col align="left" valign="top">
407 <col>
408 </colgroup>
409 <tbody>
410 <tr>
411 <td><p><span class="term">Postconditions:</span></p></td>
412 <td><code class="computeroutput">this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code></td>
413 </tr>
414 <tr>
415 <td><p><span class="term">Throws:</span></p></td>
416 <td>Will not throw.</td>
417 </tr>
418 </tbody>
419 </table></div>
420 </li>
421 </ol></div>
422 </div>
423 <div class="refsect2">
424 <a name="idp210178832"></a><h3>
425 <a name="idp99731696-bb"></a><code class="computeroutput">function</code> capacity</h3>
426 <div class="orderedlist"><ol class="orderedlist" type="1">
427 <li class="listitem">
428 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp39557232-bb"></a><span class="identifier">empty</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
429 <div class="variablelist"><table border="0" class="variablelist compact">
430 <colgroup>
431 <col align="left" valign="top">
432 <col>
433 </colgroup>
434 <tbody>
435 <tr>
436 <td><p><span class="term">Returns:</span></p></td>
437 <td>
438 <code class="computeroutput">false</code> if <code class="computeroutput">this</code> has a target, and <code class="computeroutput">true</code> otherwise.</td>
439 </tr>
440 <tr>
441 <td><p><span class="term">Throws:</span></p></td>
442 <td>Will not throw.</td>
443 </tr>
444 </tbody>
445 </table></div>
446 </li>
447 <li class="listitem">
448 <pre class="literallayout"><a name="idp41154480-bb"></a><span class="keyword">operator</span> <span class="identifier">safe_bool</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
449 <div class="variablelist"><table border="0" class="variablelist compact">
450 <colgroup>
451 <col align="left" valign="top">
452 <col>
453 </colgroup>
454 <tbody>
455 <tr>
456 <td><p><span class="term">Returns:</span></p></td>
457 <td>A <code class="computeroutput">safe_bool</code> that evaluates <code class="computeroutput">false</code> in a boolean context when <code class="computeroutput">this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code>, and <code class="computeroutput">true</code> otherwise.</td>
458 </tr>
459 <tr>
460 <td><p><span class="term">Throws:</span></p></td>
461 <td>Will not throw.</td>
462 </tr>
463 </tbody>
464 </table></div>
465 </li>
466 <li class="listitem">
467 <pre class="literallayout"><span class="keyword">bool</span> <a name="idp76193136-bb"></a><span class="keyword">operator</span><span class="special">!</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
468 <div class="variablelist"><table border="0" class="variablelist compact">
469 <colgroup>
470 <col align="left" valign="top">
471 <col>
472 </colgroup>
473 <tbody>
474 <tr>
475 <td><p><span class="term">Returns:</span></p></td>
476 <td><code class="computeroutput">this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code></td>
477 </tr>
478 <tr>
479 <td><p><span class="term">Throws:</span></p></td>
480 <td>Will not throw.</td>
481 </tr>
482 </tbody>
483 </table></div>
484 </li>
485 </ol></div>
486 </div>
487 <div class="refsect2">
488 <a name="idp210210176"></a><h3>
489 <a name="idp69032368-bb"></a><code class="computeroutput">function</code> target access</h3>
490 <div class="orderedlist"><ol class="orderedlist" type="1">
491 <li class="listitem">
492 <pre class="literallayout"><a name="idp113597248-bb"></a><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Functor<span class="special">&gt;</span> <span class="identifier">Functor</span><span class="special">*</span> <a name="idp113597808-bb"></a><span class="identifier">target</span><span class="special">(</span><span class="special">)</span><span class="special">;</span>
493 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Functor<span class="special">&gt;</span> <span class="keyword">const</span> <span class="identifier">Functor</span><span class="special">*</span> <a name="idp37917680-bb"></a><span class="identifier">target</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
494 <div class="variablelist"><table border="0" class="variablelist compact">
495 <colgroup>
496 <col align="left" valign="top">
497 <col>
498 </colgroup>
499 <tbody>
500 <tr>
501 <td><p><span class="term">Returns:</span></p></td>
502 <td>If <code class="computeroutput">this</code> stores a target of type
503         <code class="computeroutput">Functor</code>, returns the address of the
504         target. Otherwise, returns the NULL
505         pointer.</td>
506 </tr>
507 <tr>
508 <td><p><span class="term">Throws:</span></p></td>
509 <td>Will not throw.</td>
510 </tr>
511 </tbody>
512 </table></div>
513 </li>
514 <li class="listitem">
515 <pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Functor<span class="special">&gt;</span> <span class="keyword">bool</span> <a name="idp44257488-bb"></a><span class="identifier">contains</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Functor</span><span class="special">&amp;</span> f<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
516 <div class="variablelist"><table border="0" class="variablelist compact">
517 <colgroup>
518 <col align="left" valign="top">
519 <col>
520 </colgroup>
521 <tbody><tr>
522 <td><p><span class="term">Returns:</span></p></td>
523 <td>
524 <code class="computeroutput">true</code> if <code class="computeroutput">this-&gt;<a class="link" href="function.html#idp113597248-bb">target</a>&lt;Functor&gt;()</code> is non-NULL and <code class="computeroutput"><a class="link" href="function_equal.html" title="Function template function_equal">function_equal</a>(*(this-&gt;target&lt;Functor&gt;()), f)</code>
525 </td>
526 </tr></tbody>
527 </table></div>
528 </li>
529 <li class="listitem">
530 <pre class="literallayout"><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">type_info</span><span class="special">&amp;</span> <a name="idp46276608-bb"></a><span class="identifier">target_type</span><span class="special">(</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
531 <div class="variablelist"><table border="0" class="variablelist compact">
532 <colgroup>
533 <col align="left" valign="top">
534 <col>
535 </colgroup>
536 <tbody>
537 <tr>
538 <td><p><span class="term">Returns:</span></p></td>
539 <td>
540 <code class="computeroutput">typeid</code> of the target function object, or <code class="computeroutput">typeid(void)</code> if <code class="computeroutput">this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code>.</td>
541 </tr>
542 <tr>
543 <td><p><span class="term">Throws:</span></p></td>
544 <td>Will not throw.</td>
545 </tr>
546 </tbody>
547 </table></div>
548 </li>
549 </ol></div>
550 </div>
551 <div class="refsect2">
552 <a name="idp210258608"></a><h3>
553 <a name="idp55139648-bb"></a><code class="computeroutput">function</code> invocation</h3>
554 <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
555 <pre class="literallayout"><span class="identifier">result_type</span> <a name="idp55140176-bb"></a><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span><span class="special">(</span><span class="identifier">arg1_type</span> a1<span class="special">,</span> <span class="identifier">arg2_type</span> a2<span class="special">,</span> <span class="special">...</span><span class="special">,</span> <span class="identifier">argN_type</span> aN<span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>
556 <div class="variablelist"><table border="0" class="variablelist compact">
557 <colgroup>
558 <col align="left" valign="top">
559 <col>
560 </colgroup>
561 <tbody>
562 <tr>
563 <td><p><span class="term">Effects:</span></p></td>
564 <td>
565 <code class="computeroutput">f(a1, a2, ..., aN)</code>, where <code class="computeroutput">f</code> is the target of <code class="computeroutput">*this</code>.</td>
566 </tr>
567 <tr>
568 <td><p><span class="term">Returns:</span></p></td>
569 <td>if <code class="computeroutput">R</code> is <code class="computeroutput">void</code>, nothing is returned; otherwise, the return value of the call to <code class="computeroutput">f</code> is returned.</td>
570 </tr>
571 <tr>
572 <td><p><span class="term">Throws:</span></p></td>
573 <td>
574 <code class="computeroutput"><a class="link" href="bad_function_call.html" title="Class bad_function_call">bad_function_call</a></code> if <code class="computeroutput">this-&gt;<a class="link" href="function.html#idp39557232-bb">empty</a>()</code>. Otherwise, may through any exception thrown by the target function <code class="computeroutput">f</code>.</td>
575 </tr>
576 </tbody>
577 </table></div>
578 </li></ol></div>
579 </div>
580 <div class="refsect2">
581 <a name="idp210297584"></a><h3>
582 <a name="idp111166064-bb"></a><code class="computeroutput">function</code> specialized algorithms</h3>
583 <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
584 <pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">&gt;</span> 
585   <span class="keyword">void</span> <a name="boost.function.swap_idp76190448"></a><span class="identifier">swap</span><span class="special">(</span><a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span> f1<span class="special">,</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span> f2<span class="special">)</span><span class="special">;</span></pre>
586 <div class="variablelist"><table border="0" class="variablelist compact">
587 <colgroup>
588 <col align="left" valign="top">
589 <col>
590 </colgroup>
591 <tbody><tr>
592 <td><p><span class="term">Effects:</span></p></td>
593 <td><code class="computeroutput">f1.<a class="link" href="function.html#idp108302656-bb">swap</a>(f2)</code></td>
594 </tr></tbody>
595 </table></div>
596 </li></ol></div>
597 </div>
598 <div class="refsect2">
599 <a name="idp210316016"></a><h3>
600 <a name="idp48579440-bb"></a><code class="computeroutput">function</code> comparison operators</h3>
601 <div class="orderedlist"><ol class="orderedlist" type="1">
602 <li class="listitem">
603 <p><a name="boost.function.operator==_idp113382992"></a></p>
604 <pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
605   <span class="keyword">bool</span> <a name="idp113383552-bb"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span> f<span class="special">,</span> <span class="identifier">Functor</span> g<span class="special">)</span><span class="special">;</span>
606 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
607   <span class="keyword">bool</span> <a name="idp95785712-bb"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="identifier">Functor</span> g<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span> f<span class="special">)</span><span class="special">;</span>
608 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
609   <span class="keyword">bool</span> <a name="idp37641488-bb"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span> f<span class="special">,</span> reference_wrapper<span class="special">&lt;</span><span class="identifier">Functor</span><span class="special">&gt;</span> g<span class="special">)</span><span class="special">;</span>
610 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
611   <span class="keyword">bool</span> <a name="idp105237024-bb"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span>reference_wrapper<span class="special">&lt;</span><span class="identifier">Functor</span><span class="special">&gt;</span> g<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span> f<span class="special">)</span><span class="special">;</span>
612 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature1<span class="special">,</span> <span class="keyword">typename</span> Signature2<span class="special">&gt;</span> 
613   <span class="keyword">void</span> <a name="idp69032896-bb"></a><span class="keyword">operator</span><span class="special">==</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature1</span><span class="special">&gt;</span><span class="special">&amp;</span> f1<span class="special">,</span> 
614                   <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature2</span><span class="special">&gt;</span><span class="special">&amp;</span> f2<span class="special">)</span><span class="special">;</span></pre>
615 <div class="variablelist"><table border="0" class="variablelist compact">
616 <colgroup>
617 <col align="left" valign="top">
618 <col>
619 </colgroup>
620 <tbody>
621 <tr>
622 <td><p><span class="term">Returns:</span></p></td>
623 <td>True when <code class="computeroutput">f</code> stores an object of
624         type <code class="computeroutput">Functor</code> and one of the following conditions applies:
625           <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
626 <li class="listitem">
627 <code class="computeroutput">g</code> is of type
628             <code class="computeroutput">reference_wrapper&lt;Functor&gt;</code>
629             and <code class="computeroutput">f.target&lt;Functor&gt;() == g.get_pointer()</code>.</li>
630 <li class="listitem">
631 <code class="computeroutput">g</code> is not of type
632             <code class="computeroutput">reference_wrapper&lt;Functor&gt;</code>
633             and <code class="computeroutput">function_equals(*(f.target&lt;Functor&gt;()), g)</code>.</li>
634 </ul></div>
635           </td>
636 </tr>
637 <tr>
638 <td><p><span class="term">Notes:</span></p></td>
639 <td>
640 <code class="computeroutput"><a class="link" href="function.html" title="Class template function">function</a></code>
641         objects are not
642         EqualityComparable.</td>
643 </tr>
644 <tr>
645 <td><p><span class="term">Rationale:</span></p></td>
646 <td>The <code class="computeroutput">safe_bool</code> conversion
647         opens a loophole whereby two <code class="computeroutput">function</code>
648         instances can be compared via <code class="computeroutput">==</code>, although this
649         is not feasible to implement. The undefined <code class="computeroutput">void
650         operator==</code> closes the loophole and ensures a
651         compile-time or link-time error.</td>
652 </tr>
653 </tbody>
654 </table></div>
655 </li>
656 <li class="listitem">
657 <p><a name="boost.function.operator!=_idp47556112"></a></p>
658 <pre class="literallayout"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
659   <span class="keyword">bool</span> <a name="idp47556672-bb"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span> f<span class="special">,</span> <span class="identifier">Functor</span> g<span class="special">)</span><span class="special">;</span>
660 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
661   <span class="keyword">bool</span> <a name="idp101036032-bb"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="identifier">Functor</span> g<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span> f<span class="special">)</span><span class="special">;</span>
662 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
663   <span class="keyword">bool</span> <a name="idp54996816-bb"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span> f<span class="special">,</span> reference_wrapper<span class="special">&lt;</span><span class="identifier">Functor</span><span class="special">&gt;</span> g<span class="special">)</span><span class="special">;</span>
664 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature<span class="special">,</span> <span class="keyword">typename</span> Functor<span class="special">&gt;</span> 
665   <span class="keyword">bool</span> <a name="idp110874944-bb"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span>reference_wrapper<span class="special">&lt;</span><span class="identifier">Functor</span><span class="special">&gt;</span> g<span class="special">,</span> <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature</span><span class="special">&gt;</span><span class="special">&amp;</span> f<span class="special">)</span><span class="special">;</span>
666 <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> Signature1<span class="special">,</span> <span class="keyword">typename</span> Signature2<span class="special">&gt;</span> 
667   <span class="keyword">void</span> <a name="idp99861584-bb"></a><span class="keyword">operator</span><span class="special">!=</span><span class="special">(</span><span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature1</span><span class="special">&gt;</span><span class="special">&amp;</span> f1<span class="special">,</span> 
668                   <span class="keyword">const</span> <a class="link" href="function.html" title="Class template function">function</a><span class="special">&lt;</span><span class="identifier">Signature2</span><span class="special">&gt;</span><span class="special">&amp;</span> f2<span class="special">)</span><span class="special">;</span></pre>
669 <div class="variablelist"><table border="0" class="variablelist compact">
670 <colgroup>
671 <col align="left" valign="top">
672 <col>
673 </colgroup>
674 <tbody>
675 <tr>
676 <td><p><span class="term">Returns:</span></p></td>
677 <td>True when <code class="computeroutput">f</code> does not store an
678         object of type <code class="computeroutput">Functor</code> or it stores an object of
679         type <code class="computeroutput">Functor</code> and one of the following conditions
680         applies:
681           <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
682 <li class="listitem">
683 <code class="computeroutput">g</code> is of type
684             <code class="computeroutput">reference_wrapper&lt;Functor&gt;</code>
685             and <code class="computeroutput">f.target&lt;Functor&gt;() != g.get_pointer()</code>.</li>
686 <li class="listitem">
687 <code class="computeroutput">g</code> is not of type
688             <code class="computeroutput">reference_wrapper&lt;Functor&gt;</code>
689             and <code class="computeroutput">!function_equals(*(f.target&lt;Functor&gt;()), g)</code>.</li>
690 </ul></div>
691           </td>
692 </tr>
693 <tr>
694 <td><p><span class="term">Notes:</span></p></td>
695 <td>
696 <code class="computeroutput"><a class="link" href="function.html" title="Class template function">function</a></code>
697         objects are not
698         EqualityComparable.</td>
699 </tr>
700 <tr>
701 <td><p><span class="term">Rationale:</span></p></td>
702 <td>The <code class="computeroutput">safe_bool</code> conversion
703         opens a loophole whereby two <code class="computeroutput">function</code>
704         instances can be compared via <code class="computeroutput">!=</code>, although this
705         is not feasible to implement. The undefined <code class="computeroutput">void
706         operator!=</code> closes the loophole and ensures a
707         compile-time or link-time error.</td>
708 </tr>
709 </tbody>
710 </table></div>
711 </li>
712 </ol></div>
713 </div>
714 </div>
715 </div>
716 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
717 <td align="left"></td>
718 <td align="right"><div class="copyright-footer">Copyright &#169; 2001-2004 Douglas Gregor<p>Use, modification and distribution is subject to the Boost
719     Software License, Version 1.0. (See accompanying file
720     <code class="filename">LICENSE_1_0.txt</code> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</p>
721 </div></td>
722 </tr></table>
723 <hr>
724 <div class="spirit-nav">
725 <a accesskey="p" href="functionN/sig.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../function/reference.html#header.boost.function_hpp"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="function/sig.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
726 </div>
727 </body>
728 </html>