]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/context/doc/html/context/abstract_context/econtext.html
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / context / doc / html / context / abstract_context / econtext.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Class execution_context</title>
5 <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
7 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Context">
8 <link rel="up" href="../abstract_context.html" title="Context classes">
9 <link rel="prev" href="../abstract_context.html" title="Context classes">
10 <link rel="next" href="ccontext.html" title="Class captured_context">
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="../abstract_context.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstract_context.html"><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="ccontext.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h3 class="title">
27 <a name="context.abstract_context.econtext"></a><a class="link" href="econtext.html" title="Class execution_context">Class execution_context</a>
28 </h3></div></div></div>
29 <div class="important"><table border="0" summary="Important">
30 <tr>
31 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../../doc/src/images/important.png"></td>
32 <th align="left">Important</th>
33 </tr>
34 <tr><td align="left" valign="top"><p>
35 <span class="emphasis"><em>execution_context</em></span> requires C++11!
36 </p></td></tr>
37 </table></div>
38 <p>
39 Class <span class="emphasis"><em>execution_context</em></span> encapsulates <span class="emphasis"><em>fcontext_t</em></span>
40 and manages the context' stack (allocation/deallocation).
41 </p>
42 <p>
43 <span class="emphasis"><em>execution_context</em></span> allocates the context stack (using
44 its <span class="emphasis"><em>StackAllocator</em></span> argument) and creates a control structure
45 on top of it. This structure controls the life time of the stack. Instances
46 of <span class="emphasis"><em>execution_context</em></span>, associated with a specific context,
47 share the ownership of the control structure. If the last reference goes
48 out of scope, the control structure is destroyed and the stack gets deallocated
49 via the <span class="emphasis"><em>StackAllocator</em></span>. <span class="emphasis"><em>execution_context</em></span>
50 is copy-constructible, move-constructible, copy-assignable and move-assignable.
51 <span class="emphasis"><em>execution_context</em></span> maintains a static, thread-local pointer
52 (smart pointer), accessed by <span class="emphasis"><em>execution_context::current()</em></span>,
53 pointing to the active context. On each context switch the static thread-local
54 pointer is updated. The usage of this global pointer makes the context switch
55 a little bit slower (due access of thread local storage) but has some advantages.
56 It allows to access the control structure of the current active context from
57 arbitrary code paths required in order to support segmented stacks, which
58 need to call certain maintenance functions (__splitstack_getcontext etc.)
59 before each context switch (each context switch exchanges the stack). Additionally
60 the destruction of <span class="emphasis"><em>execution_context</em></span> and thus the stack
61 deallocation is faster compared to <span class="emphasis"><em>captured_context</em></span>.
62 </p>
63 <p>
64 <span class="emphasis"><em>execution_context</em></span> expects a function/functor with signature
65 <code class="computeroutput"><span class="keyword">void</span><span class="special">(</span>
66 <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">vp</span><span class="special">)</span></code> (
67 <code class="computeroutput"><span class="identifier">vp</span></code> is the data passed at
68 the first invocation of <span class="emphasis"><em>execution_context::operator()</em></span>).
69 </p>
70 <h5>
71 <a name="context.abstract_context.econtext.h0"></a>
72 <span><a name="context.abstract_context.econtext.usage_of__emphasis_execution_context__emphasis_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext.usage_of__emphasis_execution_context__emphasis_">usage
73 of <span class="emphasis"><em>execution_context</em></span></a>
74 </h5>
75 <pre class="programlisting"><span class="comment">/*
76 * grammar:
77 * P ---&gt; E '\0'
78 * E ---&gt; T {('+'|'-') T}
79 * T ---&gt; S {('*'|'/') S}
80 * S ---&gt; digit | '(' E ')'
81 */</span>
82 <span class="keyword">class</span> <span class="identifier">Parser</span><span class="special">{</span>
83 <span class="comment">// implementation omitted; see examples directory</span>
84 <span class="special">};</span>
85
86 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
87 <span class="identifier">std</span><span class="special">::</span><span class="identifier">istringstream</span> <span class="identifier">is</span><span class="special">(</span><span class="string">"1+1"</span><span class="special">);</span>
88 <span class="keyword">bool</span> <span class="identifier">done</span><span class="special">=</span><span class="keyword">false</span><span class="special">;</span>
89 <span class="identifier">std</span><span class="special">::</span><span class="identifier">exception_ptr</span> <span class="identifier">except</span><span class="special">;</span>
90
91 <span class="comment">// create handle to main execution context</span>
92 <span class="keyword">auto</span> <span class="identifier">main_ctx</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">context</span><span class="special">::</span><span class="identifier">execution_context</span><span class="special">::</span><span class="identifier">current</span><span class="special">()</span> <span class="special">);</span>
93
94 <span class="comment">// execute parser in new execution context</span>
95 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">context</span><span class="special">::</span><span class="identifier">execution_context</span> <span class="identifier">parser_ctx</span><span class="special">(</span>
96 <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_arg</span><span class="special">,</span>
97 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">context</span><span class="special">::</span><span class="identifier">fixedsize_stack</span><span class="special">(</span><span class="number">4096</span><span class="special">),</span>
98 <span class="special">[&amp;</span><span class="identifier">main_ctx</span><span class="special">,&amp;</span><span class="identifier">is</span><span class="special">,&amp;</span><span class="identifier">done</span><span class="special">,&amp;</span><span class="identifier">except</span><span class="special">](</span><span class="keyword">void</span><span class="special">*){</span>
99 <span class="comment">// create parser with callback function</span>
100 <span class="identifier">Parser</span> <span class="identifier">p</span><span class="special">(</span> <span class="identifier">is</span><span class="special">,</span>
101 <span class="special">[&amp;</span><span class="identifier">main_ctx</span><span class="special">,&amp;</span><span class="identifier">c</span><span class="special">](</span><span class="keyword">char</span> <span class="identifier">ch</span><span class="special">){</span>
102 <span class="comment">// resume main execution context</span>
103 <span class="identifier">main_ctx</span><span class="special">(</span> <span class="special">&amp;</span> <span class="identifier">ch</span><span class="special">);</span>
104 <span class="special">});</span>
105 <span class="keyword">try</span> <span class="special">{</span>
106 <span class="comment">// start recursive parsing</span>
107 <span class="identifier">p</span><span class="special">.</span><span class="identifier">run</span><span class="special">();</span>
108 <span class="special">}</span> <span class="keyword">catch</span> <span class="special">(</span> <span class="special">...</span> <span class="special">)</span> <span class="special">{</span>
109 <span class="comment">// store other exceptions in exception-pointer</span>
110 <span class="identifier">except</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">current_exception</span><span class="special">();</span>
111 <span class="special">}</span>
112 <span class="comment">// set termination flag</span>
113 <span class="identifier">done</span><span class="special">=</span><span class="keyword">true</span><span class="special">;</span>
114 <span class="comment">// resume main execution context</span>
115 <span class="identifier">main_ctx</span><span class="special">();</span>
116 <span class="special">});</span>
117
118 <span class="comment">// user-code pulls parsed data from parser</span>
119 <span class="comment">// invert control flow</span>
120 <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">vp</span> <span class="special">=</span> <span class="identifier">parser_ctx</span><span class="special">();</span>
121 <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">except</span><span class="special">)</span> <span class="special">{</span>
122 <span class="identifier">std</span><span class="special">::</span><span class="identifier">rethrow_exception</span><span class="special">(</span> <span class="identifier">except</span><span class="special">);</span>
123 <span class="special">}</span>
124 <span class="keyword">while</span><span class="special">(</span> <span class="special">!</span> <span class="identifier">done</span><span class="special">)</span> <span class="special">{</span>
125 <span class="identifier">printf</span><span class="special">(</span><span class="string">"Parsed: %c\n"</span><span class="special">,*</span> <span class="keyword">static_cast</span><span class="special">&lt;</span> <span class="keyword">char</span><span class="special">*</span> <span class="special">&gt;(</span> <span class="identifier">vp</span><span class="special">)</span> <span class="special">);</span>
126 <span class="identifier">parser_ctx</span><span class="special">();</span>
127 <span class="keyword">if</span> <span class="special">(</span> <span class="identifier">except</span><span class="special">)</span> <span class="special">{</span>
128 <span class="identifier">std</span><span class="special">::</span><span class="identifier">rethrow_exception</span><span class="special">(</span> <span class="identifier">except</span><span class="special">);</span>
129 <span class="special">}</span>
130 <span class="special">}</span>
131
132 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"main: done"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
133 <span class="special">}</span>
134
135 <span class="identifier">output</span><span class="special">:</span>
136 <span class="identifier">Parsed</span><span class="special">:</span> <span class="number">1</span>
137 <span class="identifier">Parsed</span><span class="special">:</span> <span class="special">+</span>
138 <span class="identifier">Parsed</span><span class="special">:</span> <span class="number">1</span>
139 </pre>
140 <p>
141 In this example a recursive descent parser uses a callback to emit a newly
142 passed symbol. Using <span class="emphasis"><em>execution_context</em></span> the control flow
143 can be inverted, e.g. the user-code pulls parsed symbols from the parser
144 - instead to get pushed from the parser (via callback).
145 </p>
146 <p>
147 The data (character) is transferred between the two <span class="emphasis"><em>execution_context</em></span>.
148 </p>
149 <p>
150 If the code executed by <span class="emphasis"><em>execution_context</em></span> emits an exception,
151 the application is terminated. <span class="emphasis"><em>std::exception_ptr</em></span> can
152 be used to transfer exceptions between different execution contexts.
153 </p>
154 <p>
155 Sometimes it is necessary to unwind the stack of an unfinished context to
156 destroy local stack variables so they can release allocated resources (RAII
157 pattern). The user is responsible for this task.
158 </p>
159 <h5>
160 <a name="context.abstract_context.econtext.h1"></a>
161 <span><a name="context.abstract_context.econtext.allocating_control_structures_on_top_of_stack"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext.allocating_control_structures_on_top_of_stack">allocating
162 control structures on top of stack</a>
163 </h5>
164 <p>
165 Allocating control structures on top of the stack requires to allocated the
166 <span class="emphasis"><em>stack_context</em></span> and create the control structure with
167 placement new before <span class="emphasis"><em>execution_context</em></span> is created.
168 </p>
169 <div class="note"><table border="0" summary="Note">
170 <tr>
171 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
172 <th align="left">Note</th>
173 </tr>
174 <tr><td align="left" valign="top"><p>
175 The user is responsible for destructing the control structure at the top
176 of the stack.
177 </p></td></tr>
178 </table></div>
179 <pre class="programlisting"><span class="comment">// stack-allocator used for (de-)allocating stack</span>
180 <span class="identifier">fixedsize_stack</span> <span class="identifier">salloc</span><span class="special">(</span> <span class="number">4048</span><span class="special">);</span>
181 <span class="comment">// allocate stack space</span>
182 <span class="identifier">stack_context</span> <span class="identifier">sctx</span><span class="special">(</span> <span class="identifier">salloc</span><span class="special">.</span><span class="identifier">allocate</span><span class="special">()</span> <span class="special">);</span>
183 <span class="comment">// reserve space for control structure on top of the stack</span>
184 <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">sp</span> <span class="special">=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span> <span class="keyword">char</span> <span class="special">*</span> <span class="special">&gt;(</span> <span class="identifier">sctx</span><span class="special">.</span><span class="identifier">sp</span><span class="special">)</span> <span class="special">-</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">my_control_structure</span><span class="special">);</span>
185 <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span> <span class="special">=</span> <span class="identifier">sctx</span><span class="special">.</span><span class="identifier">size</span> <span class="special">-</span> <span class="keyword">sizeof</span><span class="special">(</span> <span class="identifier">my_control_structure</span><span class="special">);</span>
186 <span class="comment">// placement new creates control structure on reserved space</span>
187 <span class="identifier">my_control_structure</span> <span class="special">*</span> <span class="identifier">cs</span> <span class="special">=</span> <span class="keyword">new</span> <span class="special">(</span> <span class="identifier">sp</span><span class="special">)</span> <span class="identifier">my_control_structure</span><span class="special">(</span> <span class="identifier">sp</span><span class="special">,</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">sctx</span><span class="special">,</span> <span class="identifier">salloc</span><span class="special">);</span>
188 <span class="special">...</span>
189 <span class="comment">// destructing the control structure</span>
190 <span class="identifier">cs</span><span class="special">-&gt;~</span><span class="identifier">my_control_structure</span><span class="special">();</span>
191 <span class="special">...</span>
192 <span class="keyword">struct</span> <span class="identifier">my_control_structure</span> <span class="special">{</span>
193 <span class="comment">// execution context</span>
194 <span class="identifier">execution_context</span> <span class="identifier">ectx</span><span class="special">;</span>
195
196 <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">StackAllocator</span> <span class="special">&gt;</span>
197 <span class="identifier">my_control_structure</span><span class="special">(</span> <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">sp</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">stack_context</span> <span class="identifier">sctx</span><span class="special">,</span> <span class="identifier">StackAllocator</span> <span class="identifier">salloc</span><span class="special">)</span> <span class="special">:</span>
198 <span class="comment">// create execution context</span>
199 <span class="identifier">ectx</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_arg</span><span class="special">,</span> <span class="identifier">preallocated</span><span class="special">(</span> <span class="identifier">sp</span><span class="special">,</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">sctx</span><span class="special">),</span> <span class="identifier">salloc</span><span class="special">,</span> <span class="identifier">entry_func</span><span class="special">)</span> <span class="special">{</span>
200 <span class="special">}</span>
201 <span class="special">...</span>
202 <span class="special">};</span>
203 </pre>
204 <h5>
205 <a name="context.abstract_context.econtext.h2"></a>
206 <span><a name="context.abstract_context.econtext.exception_handling"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext.exception_handling">exception
207 handling</a>
208 </h5>
209 <p>
210 If the function executed inside a <span class="emphasis"><em>execution_context</em></span>
211 emits ans exception, the application is terminated by calling ['std::terminate().
212 <span class="emphasis"><em>std::exception_ptr</em></span> can be used to transfer exceptions
213 between different execution contexts.
214 </p>
215 <h5>
216 <a name="context.abstract_context.econtext.h3"></a>
217 <span><a name="context.abstract_context.econtext.parameter_passing"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext.parameter_passing">parameter
218 passing</a>
219 </h5>
220 <p>
221 The void pointer argument passed to <span class="emphasis"><em>execution_context::operator()</em></span>,
222 in one context, is passed as the last argument of the <span class="emphasis"><em>context-function</em></span>
223 if the context is started for the first time. In all following invocations
224 of <span class="emphasis"><em>execution_context::operator()</em></span> the void pointer passed
225 to <span class="emphasis"><em>execution_context::operator()</em></span>, in one context, is
226 returned by <span class="emphasis"><em>execution_context::operator()</em></span> in the other
227 context.
228 </p>
229 <pre class="programlisting"><span class="keyword">class</span> <span class="identifier">X</span> <span class="special">{</span>
230 <span class="keyword">private</span><span class="special">:</span>
231 <span class="identifier">std</span><span class="special">::</span><span class="identifier">exception_ptr</span> <span class="identifier">excptr_</span><span class="special">;</span>
232 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">context</span><span class="special">::</span><span class="identifier">execution_context</span> <span class="identifier">caller_</span><span class="special">;</span>
233 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">context</span><span class="special">::</span><span class="identifier">execution_context</span> <span class="identifier">callee_</span><span class="special">;</span>
234
235 <span class="keyword">public</span><span class="special">:</span>
236 <span class="identifier">X</span><span class="special">()</span> <span class="special">:</span>
237 <span class="identifier">excptr_</span><span class="special">(),</span>
238 <span class="identifier">caller_</span><span class="special">(</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">context</span><span class="special">::</span><span class="identifier">execution_context</span><span class="special">::</span><span class="identifier">current</span><span class="special">()</span> <span class="special">),</span>
239 <span class="identifier">callee_</span><span class="special">(</span> <span class="special">[=]</span> <span class="special">(</span><span class="keyword">void</span> <span class="special">*</span> <span class="identifier">vp</span><span class="special">)</span> <span class="special">{</span>
240 <span class="keyword">try</span> <span class="special">{</span>
241 <span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="special">*</span> <span class="keyword">static_cast</span><span class="special">&lt;</span> <span class="keyword">int</span> <span class="special">*</span> <span class="special">&gt;(</span> <span class="identifier">vp</span><span class="special">);</span>
242 <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lexical_cast</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;(</span><span class="identifier">i</span><span class="special">);</span>
243 <span class="identifier">caller_</span><span class="special">(</span> <span class="special">&amp;</span> <span class="identifier">str</span><span class="special">);</span>
244 <span class="special">}</span> <span class="keyword">catch</span> <span class="special">(...)</span> <span class="special">{</span>
245 <span class="identifier">excptr_</span><span class="special">=</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">current_exception</span><span class="special">();</span>
246 <span class="special">}</span>
247 <span class="special">})</span>
248 <span class="special">{}</span>
249
250 <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">operator</span><span class="special">()(</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
251 <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">ret</span> <span class="special">=</span> <span class="identifier">callee_</span><span class="special">(</span> <span class="special">&amp;</span> <span class="identifier">i</span><span class="special">);</span>
252 <span class="keyword">if</span><span class="special">(</span><span class="identifier">excptr_</span><span class="special">){</span>
253 <span class="identifier">std</span><span class="special">::</span><span class="identifier">rethrow_exception</span><span class="special">(</span><span class="identifier">excptr_</span><span class="special">);</span>
254 <span class="special">}</span>
255 <span class="keyword">return</span> <span class="special">*</span> <span class="keyword">static_cast</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="special">*</span> <span class="special">&gt;(</span> <span class="identifier">ret</span><span class="special">);</span>
256 <span class="special">}</span>
257 <span class="special">};</span>
258
259 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
260 <span class="identifier">X</span> <span class="identifier">x</span><span class="special">;</span>
261 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">x</span><span class="special">(</span> <span class="number">7</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
262 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"done"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
263 <span class="special">}</span>
264 </pre>
265 <h5>
266 <a name="context.abstract_context.econtext.h4"></a>
267 <span><a name="context.abstract_context.econtext.class__code__phrase_role__identifier__execution_context__phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext.class__code__phrase_role__identifier__execution_context__phrase___code_">Class
268 <code class="computeroutput"><span class="identifier">execution_context</span></code></a>
269 </h5>
270 <pre class="programlisting"><span class="keyword">class</span> <span class="identifier">execution_context</span> <span class="special">{</span>
271 <span class="keyword">public</span><span class="special">:</span>
272 <span class="keyword">static</span> <span class="identifier">execution_context</span> <span class="identifier">current</span><span class="special">()</span> <span class="keyword">noexcept</span><span class="special">;</span>
273
274 <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">...</span> <span class="identifier">Args</span> <span class="special">&gt;</span>
275 <span class="identifier">execution_context</span><span class="special">(</span> <span class="identifier">Fn</span> <span class="special">&amp;&amp;</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span> <span class="special">...</span> <span class="identifier">args</span><span class="special">);</span>
276
277 <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">StackAlloc</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">...</span> <span class="identifier">Args</span> <span class="special">&gt;</span>
278 <span class="identifier">execution_context</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_arg_t</span><span class="special">,</span> <span class="identifier">StackAlloc</span> <span class="identifier">salloc</span><span class="special">,</span> <span class="identifier">Fn</span> <span class="special">&amp;&amp;</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span> <span class="special">...</span> <span class="identifier">args</span><span class="special">);</span>
279
280 <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">StackAlloc</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">...</span> <span class="identifier">Args</span> <span class="special">&gt;</span>
281 <span class="identifier">execution_context</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_arg_t</span><span class="special">,</span> <span class="identifier">preallocated</span> <span class="identifier">palloc</span><span class="special">,</span> <span class="identifier">StackAlloc</span> <span class="identifier">salloc</span><span class="special">,</span> <span class="identifier">Fn</span> <span class="special">&amp;&amp;</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span> <span class="special">...</span> <span class="identifier">args</span><span class="special">);</span>
282
283 <span class="identifier">execution_context</span><span class="special">(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
284 <span class="identifier">execution_context</span><span class="special">(</span> <span class="identifier">execution_context</span> <span class="special">&amp;&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
285
286 <span class="identifier">execution_context</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
287 <span class="identifier">execution_context</span> <span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span> <span class="identifier">execution_context</span> <span class="special">&amp;&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
288
289 <span class="keyword">explicit</span> <span class="keyword">operator</span> <span class="keyword">bool</span><span class="special">()</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
290 <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!()</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
291
292 <span class="keyword">void</span> <span class="special">*</span> <span class="keyword">operator</span><span class="special">()(</span> <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">vp</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">);</span>
293
294 <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">...</span> <span class="identifier">Args</span> <span class="special">&gt;</span>
295 <span class="keyword">void</span> <span class="special">*</span> <span class="keyword">operator</span><span class="special">()(</span> <span class="identifier">exec_ontop_arg_t</span><span class="special">,</span> <span class="identifier">Fn</span> <span class="special">&amp;&amp;</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span> <span class="special">...</span> <span class="identifier">args</span><span class="special">);</span>
296
297 <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">...</span> <span class="identifier">Args</span> <span class="special">&gt;</span>
298 <span class="keyword">void</span> <span class="special">*</span> <span class="keyword">operator</span><span class="special">()(</span> <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">vp</span><span class="special">,</span> <span class="identifier">exec_ontop_arg_t</span><span class="special">,</span> <span class="identifier">Fn</span> <span class="special">&amp;&amp;</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span> <span class="special">...</span> <span class="identifier">args</span><span class="special">);</span>
299
300 <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
301
302 <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
303
304 <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
305
306 <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
307
308 <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;=(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
309
310 <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;=(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
311
312 <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traitsT</span> <span class="special">&gt;</span>
313 <span class="keyword">friend</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span> <span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traitsT</span> <span class="special">&gt;</span> <span class="special">&amp;</span>
314 <span class="keyword">operator</span><span class="special">&lt;&lt;(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span> <span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traitsT</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">);</span>
315 <span class="special">};</span>
316 </pre>
317 <h5>
318 <a name="context.abstract_context.econtext.h5"></a>
319 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__static__phrase___phrase_role__identifier__execution_context__phrase___phrase_role__identifier__current__phrase__phrase_role__special______phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__static__phrase___phrase_role__identifier__execution_context__phrase___phrase_role__identifier__current__phrase__phrase_role__special______phrase___code_"><code class="computeroutput"><span class="keyword">static</span> <span class="identifier">execution_context</span>
320 <span class="identifier">current</span><span class="special">()</span></code></a>
321 </h5>
322 <div class="variablelist">
323 <p class="title"><b></b></p>
324 <dl>
325 <dt><span class="term">Returns:</span></dt>
326 <dd><p>
327 Returns an instance of excution_context pointing to the active execution
328 context.
329 </p></dd>
330 <dt><span class="term">Throws:</span></dt>
331 <dd><p>
332 Nothing.
333 </p></dd>
334 </dl>
335 </div>
336 <h5>
337 <a name="context.abstract_context.econtext.h6"></a>
338 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__template__phrase__phrase_role__special___lt___phrase___phrase_role__identifier__typname__phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__keyword__typename__phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase___phrase_role__special___gt___phrase___phrase_role__identifier__execution_context__phrase__phrase_role__special_____phrase___phrase_role__identifier__fn__phrase___phrase_role__special___amp__amp___phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__identifier__args__phrase___phrase_role__special___amp__amp___phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase__phrase_role__special_____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__template__phrase__phrase_role__special___lt___phrase___phrase_role__identifier__typname__phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__keyword__typename__phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase___phrase_role__special___gt___phrase___phrase_role__identifier__execution_context__phrase__phrase_role__special_____phrase___phrase_role__identifier__fn__phrase___phrase_role__special___amp__amp___phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__identifier__args__phrase___phrase_role__special___amp__amp___phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span> <span class="identifier">typname</span> <span class="identifier">Fn</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">...</span> <span class="identifier">Args</span> <span class="special">&gt;</span> <span class="identifier">execution_context</span><span class="special">(</span> <span class="identifier">Fn</span> <span class="special">&amp;&amp;</span>
339 <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span>
340 <span class="special">...</span> <span class="identifier">args</span><span class="special">)</span></code></a>
341 </h5>
342 <div class="variablelist">
343 <p class="title"><b></b></p>
344 <dl>
345 <dt><span class="term">Effects:</span></dt>
346 <dd><p>
347 Creates a new execution context and prepares the context to execute
348 <code class="computeroutput"><span class="identifier">fn</span></code>. <code class="computeroutput"><span class="identifier">fixedsize_stack</span></code>
349 is used as default stack allocator (stack size == fixedsize_stack::traits::default_size().
350 </p></dd>
351 </dl>
352 </div>
353 <h5>
354 <a name="context.abstract_context.econtext.h7"></a>
355 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__template__phrase__phrase_role__special___lt___phrase___phrase_role__keyword__typename__phrase___phrase_role__identifier__stackalloc__phrase__phrase_role__special_____phrase___phrase_role__identifier__typname__phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__keyword__typename__phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase___phrase_role__special___gt___phrase___phrase_role__identifier__execution_context__phrase__phrase_role__special_____phrase___phrase_role__identifier__std__phrase__phrase_role__special______phrase__phrase_role__identifier__allocator_arg_t__phrase__phrase_role__special_____phrase___phrase_role__identifier__stackalloc__phrase___phrase_role__identifier__salloc__phrase__phrase_role__special_____phrase___phrase_role__identifier__fn__phrase___phrase_role__special___amp__amp___phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__identifier__args__phrase___phrase_role__special___amp__amp___phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase__phrase_role__special_____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__template__phrase__phrase_role__special___lt___phrase___phrase_role__keyword__typename__phrase___phrase_role__identifier__stackalloc__phrase__phrase_role__special_____phrase___phrase_role__identifier__typname__phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__keyword__typename__phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase___phrase_role__special___gt___phrase___phrase_role__identifier__execution_context__phrase__phrase_role__special_____phrase___phrase_role__identifier__std__phrase__phrase_role__special______phrase__phrase_role__identifier__allocator_arg_t__phrase__phrase_role__special_____phrase___phrase_role__identifier__stackalloc__phrase___phrase_role__identifier__salloc__phrase__phrase_role__special_____phrase___phrase_role__identifier__fn__phrase___phrase_role__special___amp__amp___phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__identifier__args__phrase___phrase_role__special___amp__amp___phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">StackAlloc</span><span class="special">,</span> <span class="identifier">typname</span> <span class="identifier">Fn</span><span class="special">,</span> <span class="keyword">typename</span>
356 <span class="special">...</span> <span class="identifier">Args</span>
357 <span class="special">&gt;</span> <span class="identifier">execution_context</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_arg_t</span><span class="special">,</span>
358 <span class="identifier">StackAlloc</span> <span class="identifier">salloc</span><span class="special">,</span> <span class="identifier">Fn</span> <span class="special">&amp;&amp;</span>
359 <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span>
360 <span class="special">...</span> <span class="identifier">args</span><span class="special">)</span></code></a>
361 </h5>
362 <div class="variablelist">
363 <p class="title"><b></b></p>
364 <dl>
365 <dt><span class="term">Effects:</span></dt>
366 <dd><p>
367 Creates a new execution context and prepares the context to execute
368 <code class="computeroutput"><span class="identifier">fn</span></code>.
369 </p></dd>
370 </dl>
371 </div>
372 <h5>
373 <a name="context.abstract_context.econtext.h8"></a>
374 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__template__phrase__phrase_role__special___lt___phrase___phrase_role__keyword__typename__phrase___phrase_role__identifier__stackalloc__phrase__phrase_role__special_____phrase___phrase_role__identifier__typname__phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__keyword__typename__phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase___phrase_role__special___gt___phrase___phrase_role__identifier__execution_context__phrase__phrase_role__special_____phrase___phrase_role__identifier__std__phrase__phrase_role__special______phrase__phrase_role__identifier__allocator_arg_t__phrase__phrase_role__special_____phrase___phrase_role__identifier__preallocated__phrase___phrase_role__identifier__palloc__phrase__phrase_role__special_____phrase___phrase_role__identifier__stackalloc__phrase___phrase_role__identifier__salloc__phrase__phrase_role__special_____phrase___phrase_role__identifier__fn__phrase___phrase_role__special___amp__amp___phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__identifier__args__phrase___phrase_role__special___amp__amp___phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase__phrase_role__special_____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__template__phrase__phrase_role__special___lt___phrase___phrase_role__keyword__typename__phrase___phrase_role__identifier__stackalloc__phrase__phrase_role__special_____phrase___phrase_role__identifier__typname__phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__keyword__typename__phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase___phrase_role__special___gt___phrase___phrase_role__identifier__execution_context__phrase__phrase_role__special_____phrase___phrase_role__identifier__std__phrase__phrase_role__special______phrase__phrase_role__identifier__allocator_arg_t__phrase__phrase_role__special_____phrase___phrase_role__identifier__preallocated__phrase___phrase_role__identifier__palloc__phrase__phrase_role__special_____phrase___phrase_role__identifier__stackalloc__phrase___phrase_role__identifier__salloc__phrase__phrase_role__special_____phrase___phrase_role__identifier__fn__phrase___phrase_role__special___amp__amp___phrase___phrase_role__identifier__fn__phrase__phrase_role__special_____phrase___phrase_role__identifier__args__phrase___phrase_role__special___amp__amp___phrase___phrase_role__special_______phrase___phrase_role__identifier__args__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">StackAlloc</span><span class="special">,</span> <span class="identifier">typname</span> <span class="identifier">Fn</span><span class="special">,</span> <span class="keyword">typename</span>
375 <span class="special">...</span> <span class="identifier">Args</span>
376 <span class="special">&gt;</span> <span class="identifier">execution_context</span><span class="special">(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator_arg_t</span><span class="special">,</span>
377 <span class="identifier">preallocated</span> <span class="identifier">palloc</span><span class="special">,</span> <span class="identifier">StackAlloc</span>
378 <span class="identifier">salloc</span><span class="special">,</span>
379 <span class="identifier">Fn</span> <span class="special">&amp;&amp;</span>
380 <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span>
381 <span class="special">...</span> <span class="identifier">args</span><span class="special">)</span></code></a>
382 </h5>
383 <div class="variablelist">
384 <p class="title"><b></b></p>
385 <dl>
386 <dt><span class="term">Effects:</span></dt>
387 <dd><p>
388 Creates a new execution context and prepares the context to execute
389 <code class="computeroutput"><span class="identifier">fn</span></code>. Used to store control
390 structures on top of the stack.
391 </p></dd>
392 </dl>
393 </div>
394 <h5>
395 <a name="context.abstract_context.econtext.h9"></a>
396 <span><a name="context.abstract_context.econtext._code__phrase_role__identifier__execution_context__phrase__phrase_role__special_____phrase___phrase_role__identifier__execution_context__phrase___phrase_role__keyword__const__phrase__phrase_role__special___amp___phrase___phrase_role__identifier__other__phrase__phrase_role__special_____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__identifier__execution_context__phrase__phrase_role__special_____phrase___phrase_role__identifier__execution_context__phrase___phrase_role__keyword__const__phrase__phrase_role__special___amp___phrase___phrase_role__identifier__other__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="identifier">execution_context</span><span class="special">(</span>
397 <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span></code></a>
398 </h5>
399 <div class="variablelist">
400 <p class="title"><b></b></p>
401 <dl>
402 <dt><span class="term">Effects:</span></dt>
403 <dd><p>
404 Copies <code class="computeroutput"><span class="identifier">other</span></code>, e.g.
405 underlying capture record is shared with <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
406 </p></dd>
407 <dt><span class="term">Throws:</span></dt>
408 <dd><p>
409 Nothing.
410 </p></dd>
411 </dl>
412 </div>
413 <h5>
414 <a name="context.abstract_context.econtext.h10"></a>
415 <span><a name="context.abstract_context.econtext._code__phrase_role__identifier__execution_context__phrase__phrase_role__special_____phrase___phrase_role__identifier__execution_context__phrase___phrase_role__special___amp__amp___phrase___phrase_role__identifier__other__phrase__phrase_role__special_____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__identifier__execution_context__phrase__phrase_role__special_____phrase___phrase_role__identifier__execution_context__phrase___phrase_role__special___amp__amp___phrase___phrase_role__identifier__other__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="identifier">execution_context</span><span class="special">(</span>
416 <span class="identifier">execution_context</span> <span class="special">&amp;&amp;</span>
417 <span class="identifier">other</span><span class="special">)</span></code></a>
418 </h5>
419 <div class="variablelist">
420 <p class="title"><b></b></p>
421 <dl>
422 <dt><span class="term">Effects:</span></dt>
423 <dd><p>
424 Moves underlying capture record to <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
425 </p></dd>
426 <dt><span class="term">Throws:</span></dt>
427 <dd><p>
428 Nothing.
429 </p></dd>
430 </dl>
431 </div>
432 <h5>
433 <a name="context.abstract_context.econtext.h11"></a>
434 <span><a name="context.abstract_context.econtext._code__phrase_role__identifier__execution_context__phrase___phrase_role__special___amp___phrase___phrase_role__keyword__operator__phrase__phrase_role__special______phrase___phrase_role__identifier__execution_context__phrase___phrase_role__keyword__const__phrase__phrase_role__special___amp___phrase___phrase_role__identifier__other__phrase__phrase_role__special_____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__identifier__execution_context__phrase___phrase_role__special___amp___phrase___phrase_role__keyword__operator__phrase__phrase_role__special______phrase___phrase_role__identifier__execution_context__phrase___phrase_role__keyword__const__phrase__phrase_role__special___amp___phrase___phrase_role__identifier__other__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="identifier">execution_context</span> <span class="special">&amp;</span>
435 <span class="keyword">operator</span><span class="special">=(</span>
436 <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span></code></a>
437 </h5>
438 <div class="variablelist">
439 <p class="title"><b></b></p>
440 <dl>
441 <dt><span class="term">Effects:</span></dt>
442 <dd><p>
443 Copies the state of <code class="computeroutput"><span class="identifier">other</span></code>
444 to <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>,
445 state (capture record) is shared.
446 </p></dd>
447 <dt><span class="term">Throws:</span></dt>
448 <dd><p>
449 Nothing.
450 </p></dd>
451 </dl>
452 </div>
453 <h5>
454 <a name="context.abstract_context.econtext.h12"></a>
455 <span><a name="context.abstract_context.econtext._code__phrase_role__identifier__execution_context__phrase___phrase_role__special___amp___phrase___phrase_role__keyword__operator__phrase__phrase_role__special______phrase___phrase_role__identifier__execution_context__phrase___phrase_role__special___amp__amp___phrase___phrase_role__identifier__other__phrase__phrase_role__special_____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__identifier__execution_context__phrase___phrase_role__special___amp___phrase___phrase_role__keyword__operator__phrase__phrase_role__special______phrase___phrase_role__identifier__execution_context__phrase___phrase_role__special___amp__amp___phrase___phrase_role__identifier__other__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="identifier">execution_context</span> <span class="special">&amp;</span>
456 <span class="keyword">operator</span><span class="special">=(</span>
457 <span class="identifier">execution_context</span> <span class="special">&amp;&amp;</span>
458 <span class="identifier">other</span><span class="special">)</span></code></a>
459 </h5>
460 <div class="variablelist">
461 <p class="title"><b></b></p>
462 <dl>
463 <dt><span class="term">Effects:</span></dt>
464 <dd><p>
465 Moves the state of <code class="computeroutput"><span class="identifier">other</span></code>
466 to <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
467 using move semantics.
468 </p></dd>
469 <dt><span class="term">Throws:</span></dt>
470 <dd><p>
471 Nothing.
472 </p></dd>
473 </dl>
474 </div>
475 <h5>
476 <a name="context.abstract_context.econtext.h13"></a>
477 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__explicit__phrase___phrase_role__keyword__operator__phrase___phrase_role__keyword__bool__phrase__phrase_role__special______phrase___phrase_role__keyword__const__phrase___phrase_role__keyword__noexcept__phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__explicit__phrase___phrase_role__keyword__operator__phrase___phrase_role__keyword__bool__phrase__phrase_role__special______phrase___phrase_role__keyword__const__phrase___phrase_role__keyword__noexcept__phrase___code_"><code class="computeroutput"><span class="keyword">explicit</span> <span class="keyword">operator</span>
478 <span class="keyword">bool</span><span class="special">()</span> <span class="keyword">const</span> <span class="keyword">noexcept</span></code></a>
479 </h5>
480 <div class="variablelist">
481 <p class="title"><b></b></p>
482 <dl>
483 <dt><span class="term">Returns:</span></dt>
484 <dd><p>
485 <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
486 points to a capture record.
487 </p></dd>
488 <dt><span class="term">Throws:</span></dt>
489 <dd><p>
490 Nothing.
491 </p></dd>
492 </dl>
493 </div>
494 <h5>
495 <a name="context.abstract_context.econtext.h14"></a>
496 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__bool__phrase___phrase_role__keyword__operator__phrase__phrase_role__special_______phrase___phrase_role__keyword__const__phrase___phrase_role__keyword__noexcept__phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__bool__phrase___phrase_role__keyword__operator__phrase__phrase_role__special_______phrase___phrase_role__keyword__const__phrase___phrase_role__keyword__noexcept__phrase___code_"><code class="computeroutput"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!()</span> <span class="keyword">const</span> <span class="keyword">noexcept</span></code></a>
497 </h5>
498 <div class="variablelist">
499 <p class="title"><b></b></p>
500 <dl>
501 <dt><span class="term">Returns:</span></dt>
502 <dd><p>
503 <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
504 does not point to a capture record.
505 </p></dd>
506 <dt><span class="term">Throws:</span></dt>
507 <dd><p>
508 Nothing.
509 </p></dd>
510 </dl>
511 </div>
512 <h5>
513 <a name="context.abstract_context.econtext.h15"></a>
514 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__void__phrase___phrase_role__special_____phrase___phrase_role__keyword__operator__phrase__phrase_role__special_______phrase___phrase_role__keyword__void__phrase___phrase_role__special_____phrase___phrase_role__identifier__vp__phrase__phrase_role__special_____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__void__phrase___phrase_role__special_____phrase___phrase_role__keyword__operator__phrase__phrase_role__special_______phrase___phrase_role__keyword__void__phrase___phrase_role__special_____phrase___phrase_role__identifier__vp__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="keyword">void</span> <span class="special">*</span> <span class="keyword">operator</span><span class="special">()(</span> <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">vp</span><span class="special">)</span></code></a>
515 </h5>
516 <pre class="programlisting"><span class="keyword">void</span> <span class="special">*</span> <span class="keyword">operator</span><span class="special">()(</span> <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">vp</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
517
518 <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">...</span> <span class="identifier">Args</span> <span class="special">&gt;</span>
519 <span class="keyword">void</span> <span class="special">*</span> <span class="keyword">operator</span><span class="special">()(</span> <span class="identifier">exec_ontop_arg_t</span><span class="special">,</span> <span class="identifier">Fn</span> <span class="special">&amp;&amp;</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span> <span class="special">...</span> <span class="identifier">args</span><span class="special">);</span>
520
521 <span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">Fn</span><span class="special">,</span> <span class="keyword">typename</span> <span class="special">...</span> <span class="identifier">Args</span> <span class="special">&gt;</span>
522 <span class="keyword">void</span> <span class="special">*</span> <span class="keyword">operator</span><span class="special">()(</span> <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">data</span><span class="special">,</span> <span class="identifier">exec_ontop_arg_t</span><span class="special">,</span> <span class="identifier">Fn</span> <span class="special">&amp;&amp;</span> <span class="identifier">fn</span><span class="special">,</span> <span class="identifier">Args</span> <span class="special">&amp;&amp;</span> <span class="special">...</span> <span class="identifier">args</span><span class="special">);</span>
523 </pre>
524 <div class="variablelist">
525 <p class="title"><b></b></p>
526 <dl>
527 <dt><span class="term">Effects:</span></dt>
528 <dd>
529 <p>
530 Stores internally the current context data (stack pointer, instruction
531 pointer, and CPU registers) of the current active context and restores
532 the context data from <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>, which implies jumping to <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>'s
533 context. The void pointer argument, <code class="computeroutput"><span class="identifier">vp</span></code>,
534 is passed to the current context to be returned by the most recent
535 call to <code class="computeroutput"><span class="identifier">execution_context</span><span class="special">::</span><span class="keyword">operator</span><span class="special">()</span></code> in the same thread. <code class="computeroutput"><span class="identifier">fn</span></code> is executed with arguments <code class="computeroutput"><span class="identifier">args</span></code> on top of the stack of <code class="computeroutput"><span class="keyword">this</span></code>. [[Note:
536 </p>
537 <p>
538 The behaviour is undefined if <code class="computeroutput"><span class="keyword">operator</span><span class="special">()()</span></code> is called while <code class="computeroutput"><span class="identifier">execution_context</span><span class="special">::</span><span class="identifier">current</span><span class="special">()</span></code> returns <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> (e.g. resuming an already running
539 context). If the top-level context function returns, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">exit</span><span class="special">()</span></code>
540 is called.
541 </p>
542 </dd>
543 <dt><span class="term">Returns:</span></dt>
544 <dd><p>
545 The void pointer argument passed to the most recent call to <code class="computeroutput"><span class="identifier">execution_context</span><span class="special">::</span><span class="keyword">operator</span><span class="special">()</span></code>,
546 if any.
547 </p></dd>
548 </dl>
549 </div>
550 <h5>
551 <a name="context.abstract_context.econtext.h16"></a>
552 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special______phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special______phrase___code_"><code class="computeroutput"><span class="keyword">operator</span><span class="special">==</span></code></a>
553 </h5>
554 <pre class="programlisting"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">==(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
555 </pre>
556 <div class="variablelist">
557 <p class="title"><b></b></p>
558 <dl>
559 <dt><span class="term">Returns:</span></dt>
560 <dd><p>
561 <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
562 and <code class="computeroutput"><span class="identifier">other</span></code> represent
563 the same execution context, <code class="computeroutput"><span class="keyword">false</span></code>
564 otherwise.
565 </p></dd>
566 <dt><span class="term">Throws:</span></dt>
567 <dd><p>
568 Nothing.
569 </p></dd>
570 </dl>
571 </div>
572 <h5>
573 <a name="context.abstract_context.econtext.h17"></a>
574 <span><a name="context.abstract_context.econtext.code_phrase_role_keyword_operat0"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext.code_phrase_role_keyword_operat0"><code class="computeroutput"><span class="keyword">operator</span><span class="special">!=</span></code></a>
575 </h5>
576 <pre class="programlisting"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!=(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
577 </pre>
578 <div class="variablelist">
579 <p class="title"><b></b></p>
580 <dl>
581 <dt><span class="term">Returns:</span></dt>
582 <dd><p>
583 [`! (other == * this)
584 </p></dd>
585 </dl>
586 </div>
587 <p>
588 [[Throws:] [Nothing.]] ]
589 </p>
590 <h5>
591 <a name="context.abstract_context.econtext.h18"></a>
592 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special___lt___phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special___lt___phrase___code_"><code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;</span></code></a>
593 </h5>
594 <pre class="programlisting"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
595 </pre>
596 <div class="variablelist">
597 <p class="title"><b></b></p>
598 <dl>
599 <dt><span class="term">Returns:</span></dt>
600 <dd><p>
601 <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span> <span class="special">!=</span> <span class="identifier">other</span></code>
602 is true and the implementation-defined total order of <code class="computeroutput"><span class="identifier">execution_context</span></code> values places
603 <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
604 before <code class="computeroutput"><span class="identifier">other</span></code>, false
605 otherwise.
606 </p></dd>
607 <dt><span class="term">Throws:</span></dt>
608 <dd><p>
609 Nothing.
610 </p></dd>
611 </dl>
612 </div>
613 <h5>
614 <a name="context.abstract_context.econtext.h19"></a>
615 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special___gt___phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special___gt___phrase___code_"><code class="computeroutput"><span class="keyword">operator</span><span class="special">&gt;</span></code></a>
616 </h5>
617 <pre class="programlisting"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
618 </pre>
619 <div class="variablelist">
620 <p class="title"><b></b></p>
621 <dl>
622 <dt><span class="term">Returns:</span></dt>
623 <dd><p>
624 <code class="computeroutput"><span class="identifier">other</span> <span class="special">&lt;</span>
625 <span class="special">*</span> <span class="keyword">this</span></code>
626 </p></dd>
627 <dt><span class="term">Throws:</span></dt>
628 <dd><p>
629 Nothing.
630 </p></dd>
631 </dl>
632 </div>
633 <h5>
634 <a name="context.abstract_context.econtext.h20"></a>
635 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special___lt____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special___lt____phrase___code_"><code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;=</span></code></a>
636 </h5>
637 <pre class="programlisting"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&lt;=(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
638 </pre>
639 <div class="variablelist">
640 <p class="title"><b></b></p>
641 <dl>
642 <dt><span class="term">Returns:</span></dt>
643 <dd><p>
644 <code class="computeroutput"><span class="special">!</span> <span class="special">(</span><span class="identifier">other</span> <span class="special">&lt;</span>
645 <span class="special">*</span> <span class="keyword">this</span><span class="special">)</span></code>
646 </p></dd>
647 <dt><span class="term">Throws:</span></dt>
648 <dd><p>
649 Nothing.
650 </p></dd>
651 </dl>
652 </div>
653 <h5>
654 <a name="context.abstract_context.econtext.h21"></a>
655 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special___gt____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special___gt____phrase___code_"><code class="computeroutput"><span class="keyword">operator</span><span class="special">&gt;=</span></code></a>
656 </h5>
657 <pre class="programlisting"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">&gt;=(</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">;</span>
658 </pre>
659 <div class="variablelist">
660 <p class="title"><b></b></p>
661 <dl>
662 <dt><span class="term">Returns:</span></dt>
663 <dd><p>
664 <code class="computeroutput"><span class="special">!</span> <span class="special">(*</span>
665 <span class="keyword">this</span> <span class="special">&lt;</span>
666 <span class="identifier">other</span><span class="special">)</span></code>
667 </p></dd>
668 <dt><span class="term">Throws:</span></dt>
669 <dd><p>
670 Nothing.
671 </p></dd>
672 </dl>
673 </div>
674 <h5>
675 <a name="context.abstract_context.econtext.h22"></a>
676 <span><a name="context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special___lt__lt___phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__keyword__operator__phrase__phrase_role__special___lt__lt___phrase___code_"><code class="computeroutput"><span class="keyword">operator</span><span class="special">&lt;&lt;</span></code></a>
677 </h5>
678 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span> <span class="keyword">typename</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traitsT</span> <span class="special">&gt;</span>
679 <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span> <span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traitsT</span> <span class="special">&gt;</span> <span class="special">&amp;</span>
680 <span class="keyword">operator</span><span class="special">&lt;&lt;(</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span> <span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traitsT</span> <span class="special">&gt;</span> <span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">execution_context</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span><span class="special">);</span>
681 </pre>
682 <div class="variablelist">
683 <p class="title"><b></b></p>
684 <dl>
685 <dt><span class="term">Efects:</span></dt>
686 <dd><p>
687 Writes the representation of <code class="computeroutput"><span class="identifier">other</span></code>
688 to stream <code class="computeroutput"><span class="identifier">os</span></code>.
689 </p></dd>
690 <dt><span class="term">Returns:</span></dt>
691 <dd><p>
692 <code class="computeroutput"><span class="identifier">os</span></code>
693 </p></dd>
694 </dl>
695 </div>
696 <h5>
697 <a name="context.abstract_context.econtext.h23"></a>
698 <span><a name="context.abstract_context.econtext.struct__code__phrase_role__identifier__preallocated__phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext.struct__code__phrase_role__identifier__preallocated__phrase___code_">Struct
699 <code class="computeroutput"><span class="identifier">preallocated</span></code></a>
700 </h5>
701 <pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">preallocated</span> <span class="special">{</span>
702 <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">sp</span><span class="special">;</span>
703 <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">;</span>
704 <span class="identifier">stack_context</span> <span class="identifier">sctx</span><span class="special">;</span>
705
706 <span class="identifier">preallocated</span><span class="special">(</span> <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">sp</span><span class="special">,</span> <span class="identifier">std</span><span class="special">:</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">stack_allocator</span> <span class="identifier">sctx</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">;</span>
707 <span class="special">};</span>
708 </pre>
709 <h5>
710 <a name="context.abstract_context.econtext.h24"></a>
711 <span><a name="context.abstract_context.econtext._code__phrase_role__identifier__preallocated__phrase__phrase_role__special_____phrase___phrase_role__keyword__void__phrase___phrase_role__special_____phrase___phrase_role__identifier__sp__phrase__phrase_role__special_____phrase___phrase_role__identifier__std__phrase__phrase_role__special_____phrase__phrase_role__identifier__size_t__phrase___phrase_role__identifier__size__phrase__phrase_role__special_____phrase___phrase_role__identifier__stack_allocator__phrase___phrase_role__identifier__sctx__phrase__phrase_role__special_____phrase___code_"></a></span><a class="link" href="econtext.html#context.abstract_context.econtext._code__phrase_role__identifier__preallocated__phrase__phrase_role__special_____phrase___phrase_role__keyword__void__phrase___phrase_role__special_____phrase___phrase_role__identifier__sp__phrase__phrase_role__special_____phrase___phrase_role__identifier__std__phrase__phrase_role__special_____phrase__phrase_role__identifier__size_t__phrase___phrase_role__identifier__size__phrase__phrase_role__special_____phrase___phrase_role__identifier__stack_allocator__phrase___phrase_role__identifier__sctx__phrase__phrase_role__special_____phrase___code_"><code class="computeroutput"><span class="identifier">preallocated</span><span class="special">(</span>
712 <span class="keyword">void</span> <span class="special">*</span> <span class="identifier">sp</span><span class="special">,</span> <span class="identifier">std</span><span class="special">:</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">stack_allocator</span> <span class="identifier">sctx</span><span class="special">)</span></code></a>
713 </h5>
714 <div class="variablelist">
715 <p class="title"><b></b></p>
716 <dl>
717 <dt><span class="term">Effects:</span></dt>
718 <dd><p>
719 Creates an object of preallocated.
720 </p></dd>
721 </dl>
722 </div>
723 </div>
724 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
725 <td align="left"></td>
726 <td align="right"><div class="copyright-footer">Copyright &#169; 2014 Oliver Kowalke<p>
727 Distributed under the Boost Software License, Version 1.0. (See accompanying
728 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
729 </p>
730 </div></td>
731 </tr></table>
732 <hr>
733 <div class="spirit-nav">
734 <a accesskey="p" href="../abstract_context.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstract_context.html"><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="ccontext.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
735 </div>
736 </body>
737 </html>