Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/parameter/doc/html/reference.html @ 12

Last change on this file since 12 was 12, checked in by landauf, 17 years ago

added boost

  • Property svn:executable set to *
File size: 50.2 KB
Line 
1<?xml version="1.0" encoding="utf-8" ?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6<meta name="generator" content="Docutils 0.3.8: http://docutils.sourceforge.net/" />
7<title>The Boost Parameter Library Reference Documentation</title>
8<link rel="stylesheet" href="rst.css" type="text/css" />
9</head>
10<body>
11<div class="document" id="the-boost-parameter-library-reference-documentation">
12<h1 class="title">The Boost Parameter Library Reference Documentation</h1>
13<p><a class="reference" href="../../../../index.htm"><img alt="Boost" src="../../../../boost.png" /></a></p>
14<table class="docutils field-list" frame="void" rules="none">
15<col class="field-name" />
16<col class="field-body" />
17<tbody valign="top">
18<tr class="field"><th class="field-name">Authors:</th><td class="field-body">David Abrahams, Daniel Wallin</td>
19</tr>
20<tr class="field"><th class="field-name">Contact:</th><td class="field-body"><a class="reference" href="mailto:dave&#64;boost-consulting.com">dave&#64;boost-consulting.com</a>, <a class="reference" href="mailto:dalwan01&#64;student.umu.se">dalwan01&#64;student.umu.se</a></td>
21</tr>
22<tr class="field"><th class="field-name">organization:</th><td class="field-body"><a class="reference" href="http://www.boost-consulting.com">Boost Consulting</a></td>
23</tr>
24<tr class="field"><th class="field-name">date:</th><td class="field-body">$Date: 2005/07/17 19:53:01 $</td>
25</tr>
26<tr class="field"><th class="field-name">copyright:</th><td class="field-body">Copyright David Abrahams, Daniel Wallin
272005. Distributed under the Boost Software License,
28Version 1.0. (See accompanying file LICENSE_1_0.txt
29or copy at <a class="reference" href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</td>
30</tr>
31</tbody>
32</table>
33<hr class="docutils" />
34<div class="contents topic" id="contents">
35<p class="topic-title first"><a name="contents">Contents</a></p>
36<ul class="auto-toc simple">
37<li><a class="reference" href="#preliminaries" id="id23" name="id23">1&nbsp;&nbsp;&nbsp;Preliminaries</a><ul class="auto-toc">
38<li><a class="reference" href="#namespaces" id="id24" name="id24">1.1&nbsp;&nbsp;&nbsp;Namespaces</a></li>
39<li><a class="reference" href="#exceptions" id="id25" name="id25">1.2&nbsp;&nbsp;&nbsp;Exceptions</a></li>
40<li><a class="reference" href="#thread-safety" id="id26" name="id26">1.3&nbsp;&nbsp;&nbsp;Thread Safety</a></li>
41<li><a class="reference" href="#typography" id="id27" name="id27">1.4&nbsp;&nbsp;&nbsp;Typography</a></li>
42</ul>
43</li>
44<li><a class="reference" href="#terminology" id="id28" name="id28">2&nbsp;&nbsp;&nbsp;Terminology</a></li>
45<li><a class="reference" href="#concepts" id="id29" name="id29">3&nbsp;&nbsp;&nbsp;Concepts</a><ul class="auto-toc">
46<li><a class="reference" href="#argumentpack" id="id30" name="id30">3.1&nbsp;&nbsp;&nbsp;<span class="concept">ArgumentPack</span></a></li>
47<li><a class="reference" href="#id4" id="id31" name="id31">3.2&nbsp;&nbsp;&nbsp;<span class="concept">ParameterSpec</span></a></li>
48</ul>
49</li>
50<li><a class="reference" href="#class-templates" id="id32" name="id32">4&nbsp;&nbsp;&nbsp;Class Templates</a><ul class="auto-toc">
51<li><a class="reference" href="#id6" id="id33" name="id33">4.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">keyword</span></tt></a></li>
52<li><a class="reference" href="#parameters" id="id34" name="id34">4.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">parameters</span></tt></a></li>
53<li><a class="reference" href="#optional-required" id="id35" name="id35">4.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">optional</span></tt>, <tt class="docutils literal"><span class="pre">required</span></tt></a></li>
54</ul>
55</li>
56<li><a class="reference" href="#metafunctions" id="id36" name="id36">5&nbsp;&nbsp;&nbsp;Metafunctions</a><ul class="auto-toc">
57<li><a class="reference" href="#binding" id="id37" name="id37">5.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">binding</span></tt></a></li>
58<li><a class="reference" href="#lazy-binding" id="id38" name="id38">5.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">lazy_binding</span></tt></a></li>
59</ul>
60</li>
61<li><a class="reference" href="#code-generation-macros" id="id39" name="id39">6&nbsp;&nbsp;&nbsp;Code Generation Macros</a><ul class="auto-toc">
62<li><a class="reference" href="#boost-parameter-fun-r-n-l-h-p" id="id40" name="id40">6.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUN(r,n,l,h,p)</span></tt></a></li>
63<li><a class="reference" href="#boost-parameter-keyword-n-k" id="id41" name="id41">6.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_KEYWORD(n,k)</span></tt></a></li>
64<li><a class="reference" href="#boost-parameter-match-p-a-x" id="id42" name="id42">6.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MATCH(p,a,x)</span></tt></a></li>
65</ul>
66</li>
67<li><a class="reference" href="#configuration-macros" id="id43" name="id43">7&nbsp;&nbsp;&nbsp;Configuration Macros</a><ul class="auto-toc">
68<li><a class="reference" href="#boost-parameter-max-arity" id="id44" name="id44">7.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MAX_ARITY</span></tt></a></li>
69</ul>
70</li>
71<li><a class="reference" href="#tutorial" id="id45" name="id45">8&nbsp;&nbsp;&nbsp;Tutorial</a></li>
72</ul>
73</div>
74<hr class="docutils" />
75<div class="section" id="preliminaries">
76<h1><a class="toc-backref" href="#id23" name="preliminaries">1&nbsp;&nbsp;&nbsp;Preliminaries</a></h1>
77<p>This section covers some basic information you'll need to know in
78order to understand this reference</p>
79<div class="section" id="namespaces">
80<h2><a class="toc-backref" href="#id24" name="namespaces">1.1&nbsp;&nbsp;&nbsp;Namespaces</a></h2>
81<p>In this document, all unqualified identifiers should be assumed to
82be defined in namespace <tt class="docutils literal"><span class="pre">boost::parameter</span></tt> unless otherwise
83specified.</p>
84</div>
85<div class="section" id="exceptions">
86<h2><a class="toc-backref" href="#id25" name="exceptions">1.2&nbsp;&nbsp;&nbsp;Exceptions</a></h2>
87<p>No operation described in this document
88throws an exception unless otherwise specified.</p>
89</div>
90<div class="section" id="thread-safety">
91<h2><a class="toc-backref" href="#id26" name="thread-safety">1.3&nbsp;&nbsp;&nbsp;Thread Safety</a></h2>
92<p>All components of this library can be used safely from multiple
93threads without synchronization.<a class="footnote-reference" href="#thread" id="id2" name="id2"><sup>1</sup></a></p>
94</div>
95<div class="section" id="typography">
96<h2><a class="toc-backref" href="#id27" name="typography">1.4&nbsp;&nbsp;&nbsp;Typography</a></h2>
97<p>Names written in <span class="concept">sans serif type</span> represent <a class="reference" href="../../../../more/generic_programming.html#concept">concepts</a>.</p>
98<p>In code blocks, <em>italic type</em> represents unspecified text that
99satisfies the requirements given in the detailed description that
100follows the code block.</p>
101<p>In a specification of the tokens generated by a macro, <strong>bold
102type</strong> is used to highlight the position of the expanded macro
103argument in the result.</p>
104<p>The special character β represents the value of <a class="reference" href="#boost-parameter-max-arity"><tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MAX_ARITY</span></tt></a>.</p>
105</div>
106</div>
107<hr class="docutils" />
108<div class="section" id="terminology">
109<h1><a class="toc-backref" href="#id28" name="terminology">2&nbsp;&nbsp;&nbsp;Terminology</a></h1>
110<span class="target" id="kw"></span><dl class="docutils">
111<dt>keyword</dt>
112<dd>The name of a function parameter.</dd>
113</dl>
114<span class="target" id="keyword-tag-type"></span><dl class="docutils">
115<dt>keyword tag type</dt>
116<dd>A type used to uniquely identify a function parameter.  Typically
117its name will be the same as that of the parameter.</dd>
118</dl>
119<span class="target" id="positional"></span><dl class="docutils">
120<dt>positional argument</dt>
121<dd>An argument passed with no explicit keyword.  Its parameter is
122determined in the usual C++ way: by position with respect to a
123parameter list.</dd>
124</dl>
125<span class="target" id="tag-type"></span><dl class="docutils">
126<dt>tag type</dt>
127<dd>Shorthand for “<a class="reference" href="#keyword-tag-type">keyword tag type</a>.”</dd>
128</dl>
129<span class="target" id="keyword-object"></span><dl class="docutils">
130<dt>keyword object</dt>
131<dd>An instance of <a class="reference" href="#keyword"><tt class="docutils literal"><span class="pre">keyword</span></tt></a> <tt class="docutils literal"><span class="pre">&lt;T&gt;</span></tt> for some <a class="reference" href="#tag-type">tag type</a> <tt class="docutils literal"><span class="pre">T</span></tt>.</dd>
132</dl>
133<span class="target" id="tagged-reference"></span><dl class="docutils">
134<dt>tagged reference</dt>
135<dd><p class="first">An object whose type is associated with a <a class="reference" href="#keyword-tag-type">keyword tag type</a> (the
136object's <em>keyword</em>), and that holds a reference (to the object's
137<em>value</em>).</p>
138<p class="last">As a shorthand, a “tagged reference to <tt class="docutils literal"><span class="pre">x</span></tt>” means a tagged
139reference whose <em>value</em> is <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
140</dd>
141</dl>
142<span class="target" id="tagged-default"></span><dl class="docutils">
143<dt>tagged default </dt>
144<dd>A <a class="reference" href="#tagged-reference">tagged reference</a> whose <em>value</em> represents the value of a
145default argument.</dd>
146</dl>
147<span class="target" id="tagged-lazy-default"></span><dl class="docutils">
148<dt>tagged lazy default </dt>
149<dd>A <a class="reference" href="#tagged-reference">tagged reference</a> whose <em>value</em>, when invoked with no
150arguments, computes a default argument value.</dd>
151</dl>
152<span class="target" id="intended-argument-type"></span><dl class="docutils">
153<dt>intended argument type</dt>
154<dd>The <em>intended argument type</em> of a single-element <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> is the
155type of its element's <em>value</em>.  The intended argument type of any other
156type <tt class="docutils literal"><span class="pre">X</span></tt> is <tt class="docutils literal"><span class="pre">X</span></tt> itself.</dd>
157</dl>
158<div class="note">
159<p class="first admonition-title">Note</p>
160<p class="last">In this reference, we will use concept names (and other names)
161to describe both types and objects, depending on context.  So
162for example, “an <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a>” can refer to a type that
163models <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <em>or</em> an object of such a type.</p>
164</div>
165</div>
166<hr class="docutils" />
167<div class="section" id="concepts">
168<h1><a class="toc-backref" href="#id29" name="concepts">3&nbsp;&nbsp;&nbsp;Concepts</a></h1>
169<p>This section describes the generic type <a class="reference" href="../../../../more/generic_programming.html#concept">concepts</a> used by the Parameter library.</p>
170<div class="section" id="argumentpack">
171<h2><a class="toc-backref" href="#id30" name="argumentpack">3.1&nbsp;&nbsp;&nbsp;<span class="concept">ArgumentPack</span></a></h2>
172<p>An <span class="concept">ArgumentPack</span> is a collection of <a class="reference" href="#tagged-reference">tagged reference</a>s to the
173actual arguments passed to a function.</p>
174<div class="section" id="requirements">
175<h3><a name="requirements">Requirements</a></h3>
176<p>In the table below,</p>
177<ul class="simple">
178<li><tt class="docutils literal"><span class="pre">A</span></tt> is a model of <span class="concept">ArgumentPack</span></li>
179<li><tt class="docutils literal"><span class="pre">x</span></tt> is an instance of <tt class="docutils literal"><span class="pre">A</span></tt></li>
180<li><tt class="docutils literal"><span class="pre">u</span></tt> is a <a class="reference" href="#keyword-object">keyword object</a> of type <tt class="docutils literal"><span class="pre">K</span></tt></li>
181<li><tt class="docutils literal"><span class="pre">v</span></tt> is a <a class="reference" href="#tagged-default">tagged default</a> with <a class="reference" href="#tag-type">tag type</a> <tt class="docutils literal"><span class="pre">L</span></tt> and <em>value</em> of type <tt class="docutils literal"><span class="pre">D</span></tt></li>
182<li><tt class="docutils literal"><span class="pre">w</span></tt> is a <a class="reference" href="#tagged-lazy-default">tagged lazy default</a> with <a class="reference" href="#tag-type">tag type</a> <tt class="docutils literal"><span class="pre">M</span></tt> and <em>value</em> of type <tt class="docutils literal"><span class="pre">E</span> <span class="pre">const</span></tt></li>
183<li><tt class="docutils literal"><span class="pre">z</span></tt> is an <span class="concept">ArgumentPack</span> containing a single element (as created by <a class="reference" href="#keyword"><tt class="docutils literal"><span class="pre">keyword</span></tt></a><tt class="docutils literal"><span class="pre">&lt;&gt;::operator=</span></tt>)</li>
184</ul>
185<p>Any exceptions are thrown from the invocation of <tt class="docutils literal"><span class="pre">w</span></tt>'s <em>value</em>
186will be propagated to the caller.</p>
187<table border="1" class="docutils">
188<caption><span class="concept">ArgumentPack</span> requirements</caption>
189<colgroup>
190<col width="11%" />
191<col width="31%" />
192<col width="19%" />
193<col width="40%" />
194</colgroup>
195<thead valign="bottom">
196<tr><th>Expression</th>
197<th>Type</th>
198<th>Requirements</th>
199<th>Semantics/Notes</th>
200</tr>
201</thead>
202<tbody valign="top">
203<tr><td><tt class="docutils literal"><span class="pre">x[u]</span></tt></td>
204<td><tt class="docutils literal"><span class="pre">binding&lt;A,K&gt;::type</span></tt></td>
205<td><tt class="docutils literal"><span class="pre">x</span></tt> contains an
206element <em>b</em> whose
207<a class="reference" href="#kw">keyword</a> is <tt class="docutils literal"><span class="pre">K</span></tt></td>
208<td>Returns <em>b</em>'s <em>value</em> (by
209reference).</td>
210</tr>
211<tr><td><tt class="docutils literal"><span class="pre">x[u]</span></tt></td>
212<td><tt class="docutils literal"><span class="pre">binding&lt;A,L,D&gt;::type</span></tt></td>
213<td><em>none</em></td>
214<td>If <tt class="docutils literal"><span class="pre">x</span></tt> contains an element <em>b</em> whose
215<a class="reference" href="#kw">keyword</a> is the same as <tt class="docutils literal"><span class="pre">u</span></tt>'s,
216returns <em>b</em>'s <em>value</em> (by
217reference).  Otherwise, returns <tt class="docutils literal"><span class="pre">u</span></tt>'s <em>value</em>.</td>
218</tr>
219<tr><td><tt class="docutils literal"><span class="pre">x[w]</span></tt></td>
220<td><tt class="docutils literal"><span class="pre">lazy_binding&lt;A,M,E&gt;::type</span></tt></td>
221<td><em>none</em></td>
222<td>If <tt class="docutils literal"><span class="pre">x</span></tt> contains an element <em>b</em> whose
223<a class="reference" href="#kw">keyword</a> is the same as <tt class="docutils literal"><span class="pre">w</span></tt>'s,
224returns <em>b</em>'s <em>value</em> (by
225reference).  Otherwise, invokes <tt class="docutils literal"><span class="pre">w</span></tt>'s <em>value</em> and returns the result.</td>
226</tr>
227<tr><td><tt class="docutils literal"><span class="pre">x,</span> <span class="pre">z</span></tt></td>
228<td>Model of <span class="concept">ArgumentPack</span></td>
229<td><em>none</em></td>
230<td>Returns an <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing
231all the elements of both <tt class="docutils literal"><span class="pre">x</span></tt> and
232<tt class="docutils literal"><span class="pre">z</span></tt>.</td>
233</tr>
234</tbody>
235</table>
236</div>
237</div>
238<div class="section" id="id4">
239<h2><a class="toc-backref" href="#id31" name="id4">3.2&nbsp;&nbsp;&nbsp;<span class="target" id="parameterspec"></span><span class="concept">ParameterSpec</span></a></h2>
240<p>A <span class="concept">ParameterSpec</span> describes the type requirements for arguments
241corresponding to a given <a class="reference" href="#kw">keyword</a> and indicates whether the argument
242is optional or required.  The table below details the allowed forms
243and describes their condition for satisfaction by an actual
244argument type. In each row,</p>
245<span class="target" id="conditions"></span><ul class="simple">
246<li><tt class="docutils literal"><span class="pre">K</span></tt> is the <span class="concept">ParameterSpec</span>'s <a class="reference" href="#keyword-tag-type">keyword tag type</a></li>
247<li><tt class="docutils literal"><span class="pre">A</span></tt> is an <a class="reference" href="#intended-argument-type">intended argument type</a> associated with <tt class="docutils literal"><span class="pre">K</span></tt>, if any</li>
248<li><tt class="docutils literal"><span class="pre">F</span></tt> is a unary <a class="reference" href="../../../mpl/doc/refmanual/lambda-expression.html">MPL lambda expression</a></li>
249</ul>
250<table border="1" class="docutils">
251<caption><span class="concept">ParameterSpec</span> allowed forms and conditions of satisfaction</caption>
252<colgroup>
253<col width="32%" />
254<col width="21%" />
255<col width="47%" />
256</colgroup>
257<thead valign="bottom">
258<tr><th>Type</th>
259<th><tt class="docutils literal"><span class="pre">A</span></tt> required</th>
260<th>Condition <tt class="docutils literal"><span class="pre">A</span></tt> must satisfy</th>
261</tr>
262</thead>
263<tbody valign="top">
264<tr><td><a class="reference" href="#keyword"><tt class="docutils literal"><span class="pre">keyword</span></tt></a><tt class="docutils literal"><span class="pre">&lt;K&gt;</span></tt></td>
265<td>no</td>
266<td><em>n/a</em></td>
267</tr>
268<tr><td><a class="reference" href="#optional"><tt class="docutils literal"><span class="pre">optional</span></tt></a><tt class="docutils literal"><span class="pre">&lt;K,F&gt;</span></tt></td>
269<td>no</td>
270<td><tt class="docutils literal"><span class="pre">mpl::apply&lt;F,A&gt;::type::value</span></tt>
271is <tt class="docutils literal"><span class="pre">true</span></tt>.</td>
272</tr>
273<tr><td><a class="reference" href="#required"><tt class="docutils literal"><span class="pre">required</span></tt></a><tt class="docutils literal"><span class="pre">&lt;K,F&gt;</span></tt></td>
274<td>yes</td>
275<td><tt class="docutils literal"><span class="pre">mpl::apply&lt;F,A&gt;::type::value</span></tt>
276is <tt class="docutils literal"><span class="pre">true</span></tt>.</td>
277</tr>
278</tbody>
279</table>
280<p>The information in a <span class="concept">ParameterSpec</span> is used to <a class="reference" href="index.html#controlling-overload-resolution">limit</a> the
281arguments that will be matched by <a class="reference" href="index.html#forwarding-functions">forwarding functions</a>.</p>
282</div>
283</div>
284<hr class="docutils" />
285<div class="section" id="class-templates">
286<h1><a class="toc-backref" href="#id32" name="class-templates">4&nbsp;&nbsp;&nbsp;Class Templates</a></h1>
287<div class="section" id="id6">
288<h2><a class="toc-backref" href="#id33" name="id6">4.1&nbsp;&nbsp;&nbsp;<span class="target" id="keyword"></span><tt class="docutils literal"><span class="pre">keyword</span></tt></a></h2>
289<p>The type of every <a class="reference" href="#keyword-object">keyword object</a> is a specialization of <tt class="docutils literal"><span class="pre">keyword</span></tt>.</p>
290<table class="docutils field-list" frame="void" rules="none">
291<col class="field-name" />
292<col class="field-body" />
293<tbody valign="top">
294<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/keyword.hpp">boost/parameter/keyword.hpp</a></td>
295</tr>
296</tbody>
297</table>
298<pre class="literal-block">
299template &lt;class Tag&gt;
300struct keyword
301{
302    template &lt;class T&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#operator">operator=</a>(T&amp; value) const;
303    template &lt;class T&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#operator">operator=</a>(T const&amp; value) const;
304
305    template &lt;class T&gt; <em>tagged default</em> <a class="reference" href="#id8">operator|</a>(T&amp; x) const;
306    template &lt;class T&gt; <em>tagged default</em> <a class="reference" href="#id8">operator|</a>(T const&amp; x) const;
307
308    template &lt;class F&gt; <em>tagged lazy default</em> <a class="reference" href="#id9">operator||</a>(F const&amp;) const;
309
310    static keyword&lt;Tag&gt;&amp; <a class="reference" href="#get">get</a>();
311};
312</pre>
313<span class="target" id="operator"></span><dl class="docutils">
314<dt><tt class="docutils literal"><span class="pre">operator=</span></tt></dt>
315<dd><pre class="first literal-block">
316template &lt;class T&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator=(T&amp; value) const;
317template &lt;class T&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator=(T const&amp; value) const;
318</pre>
319<table class="last docutils field-list" frame="void" rules="none">
320<col class="field-name" />
321<col class="field-body" />
322<tbody valign="top">
323<tr class="field"><th class="field-name">Requires:</th><td class="field-body">nothing</td>
324</tr>
325<tr class="field"><th class="field-name">Returns:</th><td class="field-body">an <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a>  containing a single <a class="reference" href="#tagged-reference">tagged reference</a> to
326<tt class="docutils literal"><span class="pre">value</span></tt> with <a class="reference" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">Tag</span></tt></td>
327</tr>
328</tbody>
329</table>
330</dd>
331</dl>
332<span class="target" id="id8"></span><dl class="docutils">
333<dt><tt class="docutils literal"><span class="pre">operator|</span></tt></dt>
334<dd><pre class="first literal-block">
335template &lt;class T&gt; <em>tagged default</em> operator|(T&amp; x) const;
336template &lt;class T&gt; <em>tagged default</em> operator|(T const&amp; x) const;
337</pre>
338<table class="last docutils field-list" frame="void" rules="none">
339<col class="field-name" />
340<col class="field-body" />
341<tbody valign="top">
342<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a <a class="reference" href="#tagged-default">tagged default</a> with <em>value</em> <tt class="docutils literal"><span class="pre">x</span></tt> and <a class="reference" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">Tag</span></tt>.</td>
343</tr>
344</tbody>
345</table>
346</dd>
347</dl>
348<span class="target" id="id9"></span><dl class="docutils">
349<dt><tt class="docutils literal"><span class="pre">operator||</span></tt></dt>
350<dd><pre class="first literal-block">
351template &lt;class F&gt; <em>tagged lazy default</em> operator||(F const&amp; g) const;
352</pre>
353<table class="last docutils field-list" frame="void" rules="none">
354<col class="field-name" />
355<col class="field-body" />
356<tbody valign="top">
357<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">g()</span></tt> is valid, with type <tt class="docutils literal"><span class="pre">boost::</span></tt><a class="reference" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a><tt class="docutils literal"><span class="pre">&lt;F()&gt;::type</span></tt>.<a class="footnote-reference" href="#no-result-of" id="id10" name="id10"><sup>2</sup></a></td>
358</tr>
359<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a <a class="reference" href="#tagged-lazy-default">tagged lazy default</a> with <em>value</em> <tt class="docutils literal"><span class="pre">g</span></tt> and <a class="reference" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">Tag</span></tt>.</td>
360</tr>
361</tbody>
362</table>
363</dd>
364</dl>
365<span class="target" id="get"></span><dl class="docutils">
366<dt><tt class="docutils literal"><span class="pre">get</span></tt></dt>
367<dd><pre class="first literal-block">
368static keyword&lt;Tag&gt;&amp; get();
369</pre>
370<table class="last docutils field-list" frame="void" rules="none">
371<col class="field-name" />
372<col class="field-body" />
373<tbody valign="top">
374<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a “singleton instance”: the same object will be
375returned on each invocation of <tt class="docutils literal"><span class="pre">get()</span></tt>.</td>
376</tr>
377<tr class="field"><th class="field-name">Thread Safety:</th><td class="field-body"><tt class="docutils literal"><span class="pre">get()</span></tt> can be called from multiple threads
378simultaneously.</td>
379</tr>
380</tbody>
381</table>
382</dd>
383</dl>
384</div>
385<div class="section" id="parameters">
386<h2><a class="toc-backref" href="#id34" name="parameters">4.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">parameters</span></tt></a></h2>
387<p>Provides an interface for assembling the actual arguments to a
388<cite>forwarding function</cite> into an <span class="concept">ArgumentPack</span>, in which any
389<a class="reference" href="#positional">positional</a> arguments will be tagged according to the
390corresponding template argument to <tt class="docutils literal"><span class="pre">parameters</span></tt>.</p>
391<table class="docutils field-list" frame="void" rules="none">
392<col class="field-name" />
393<col class="field-body" />
394<tbody valign="top">
395<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
396</tr>
397</tbody>
398</table>
399<pre class="literal-block">
400template &lt;class P0 = <em>unspecified</em>, class P1 = <em>unspecified</em>, …class Pβ = <em>unspecified</em>&gt;
401struct parameters
402{
403    template &lt;class A0, class A1 = <em>unspecified</em>, …class Aβ = <em>unspecified</em>&gt;
404    struct <a class="reference" href="#match">match</a>
405    {
406        typedef … type;
407    };
408
409    template &lt;class A0&gt;
410    <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#id12">operator()</a>(A0 const&amp; a0) const;
411
412    template &lt;class A0, class A1&gt;
413    <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#id12">operator()</a>(A0 const&amp; a0, A1 const&amp; a1) const; <span class="vellipsis">
414   .
415   .
416   .
417</span>
418    template &lt;class A0, class A1, …class Aβ&gt;
419    <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#id12">operator()</a>(A0 const&amp; a0, A1 const&amp; a1, …Aβ const&amp; aβ) const;
420};
421</pre>
422<table class="docutils field-list" frame="void" rules="none">
423<col class="field-name" />
424<col class="field-body" />
425<tbody valign="top">
426<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">P0</span></tt>, <tt class="docutils literal"><span class="pre">P1</span></tt>, … <tt class="docutils literal"><span class="pre">P</span></tt>β are models of <a class="reference" href="#parameterspec"><span class="concept">ParameterSpec</span></a>.</td>
427</tr>
428</tbody>
429</table>
430<div class="note">
431<p class="first admonition-title">Note</p>
432<p>In this section, <tt class="docutils literal"><span class="pre">R</span></tt><em>i</em> and <tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> are defined as
433follows, for any argument type <tt class="docutils literal"><span class="pre">A</span></tt><em>i</em>:</p>
434<blockquote class="last">
435<div class="line-block">
436<div class="line"><tt class="docutils literal"><span class="pre">R</span></tt><em>i</em> is <tt class="docutils literal"><span class="pre">A</span></tt><em>i</em>'s <a class="reference" href="#intended-argument-type">intended argument type</a></div>
437<div class="line"><br /></div>
438<div class="line-block">
439<div class="line">if <tt class="docutils literal"><span class="pre">A</span></tt><em>i</em> is a result type of <tt class="docutils literal"><span class="pre">keyword&lt;T&gt;::</span></tt><a class="reference" href="#operator"><tt class="docutils literal"><span class="pre">operator=</span></tt></a></div>
440<div class="line">then </div>
441<div class="line-block">
442<div class="line"><tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> is <tt class="docutils literal"><span class="pre">T</span></tt></div>
443</div>
444<div class="line">else </div>
445<div class="line-block">
446<div class="line"><tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> is <tt class="docutils literal"><span class="pre">P</span></tt><em>i</em>'s <a class="reference" href="#keyword-tag-type">keyword tag type</a>.</div>
447</div>
448</div>
449</div>
450</blockquote>
451</div>
452<span class="target" id="match"></span><dl class="docutils">
453<dt><tt class="docutils literal"><span class="pre">match</span></tt></dt>
454<dd><p class="first">A <a class="reference" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> used to remove a <a class="reference" href="index.html#forwarding-functions">forwarding function</a> from overload resolution.</p>
455<table class="docutils field-list" frame="void" rules="none">
456<col class="field-name" />
457<col class="field-body" />
458<tbody valign="top">
459<tr class="field"><th class="field-name">Returns:</th><td class="field-body">if <tt class="docutils literal"><span class="pre">P0</span></tt>, <tt class="docutils literal"><span class="pre">P1</span></tt>, …<tt class="docutils literal"><span class="pre">P</span></tt>β are <em>satisfied</em> (see
460below), then <tt class="docutils literal"><span class="pre">parameters&lt;P0,P1,…Pβ&gt;</span></tt>.  Otherwise,
461<tt class="docutils literal"><span class="pre">match&lt;A0,A1,…Aβ&gt;::type</span></tt> is not defined.</td>
462</tr>
463</tbody>
464</table>
465<p><tt class="docutils literal"><span class="pre">P0</span></tt>, <tt class="docutils literal"><span class="pre">P1</span></tt>, …<tt class="docutils literal"><span class="pre">P</span></tt>β are <strong>satisfied</strong> if, for
466every <em>j</em> in 0…β, either:</p>
467<ul class="last simple">
468<li><tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> is the <em>unspecified</em> default</li>
469<li><strong>or</strong>, <tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> is a specialization of <a class="reference" href="#keyword"><tt class="docutils literal"><span class="pre">keyword</span></tt></a>,</li>
470<li><strong>or</strong>, <tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> is <a class="reference" href="#optional"><tt class="docutils literal"><span class="pre">optional</span></tt></a> <tt class="docutils literal"><span class="pre">&lt;X,F&gt;</span></tt> and either<ul>
471<li><tt class="docutils literal"><span class="pre">X</span></tt> is not <tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> for any <em>i</em>,</li>
472<li><strong>or</strong> <tt class="docutils literal"><span class="pre">X</span></tt> is some <tt class="docutils literal"><span class="pre">K</span></tt><em>i</em>  and <tt class="docutils literal"><span class="pre">mpl::apply&lt;F,R</span></tt><em>i</em><tt class="docutils literal"><span class="pre">&gt;::type::value</span></tt> is <tt class="docutils literal"><span class="pre">true</span></tt></li>
473</ul>
474</li>
475<li><strong>or</strong>, <tt class="docutils literal"><span class="pre">P</span></tt><em>j</em> is <a class="reference" href="#required"><tt class="docutils literal"><span class="pre">required</span></tt></a> <tt class="docutils literal"><span class="pre">&lt;X,F&gt;</span></tt>, and<ul>
476<li><tt class="docutils literal"><span class="pre">X</span></tt> is some <tt class="docutils literal"><span class="pre">K</span></tt><em>i</em>, <strong>and</strong></li>
477<li><tt class="docutils literal"><span class="pre">mpl::apply&lt;F,R</span></tt><em>i</em><tt class="docutils literal"><span class="pre">&gt;::type::value</span></tt> is <tt class="docutils literal"><span class="pre">true</span></tt></li>
478</ul>
479</li>
480</ul>
481</dd>
482</dl>
483<span class="target" id="id12"></span><dl class="docutils">
484<dt><tt class="docutils literal"><span class="pre">operator()</span></tt></dt>
485<dd><pre class="first literal-block">
486template &lt;class A0&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator()(A0 const&amp; a0) const; <span class="vellipsis">
487  .
488  .
489  .
490</span>
491template &lt;class A0, …class Aβ&gt; <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference" href="#id12">operator()</a>(A0 const&amp; a0, …Aβ const&amp; aβ) const;
492</pre>
493<table class="last docutils field-list" frame="void" rules="none">
494<col class="field-name" />
495<col class="field-body" />
496<tbody valign="top">
497<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">An <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing, for each <tt class="docutils literal"><span class="pre">a</span></tt><em>i</em>,</p>
498<ul class="last simple">
499<li>if <tt class="docutils literal"><span class="pre">a</span></tt><em>i</em>,  is a single-element <span class="concept">ArgumentPack</span>, its element</li>
500<li>Otherwise, a <a class="reference" href="#tagged-reference">tagged reference</a> with <a class="reference" href="#kw">keyword</a> <tt class="docutils literal"><span class="pre">K</span></tt><em>i</em> and <em>value</em> <tt class="docutils literal"><span class="pre">a</span></tt><em>i</em></li>
501</ul>
502</td>
503</tr>
504</tbody>
505</table>
506</dd>
507</dl>
508</div>
509<div class="section" id="optional-required">
510<h2><a class="toc-backref" href="#id35" name="optional-required">4.3&nbsp;&nbsp;&nbsp;<span class="target" id="required"></span><span class="target" id="optional"></span><tt class="docutils literal"><span class="pre">optional</span></tt>, <tt class="docutils literal"><span class="pre">required</span></tt></a></h2>
511<p>These templates describe the requirements on a function parameter.</p>
512<table class="docutils field-list" frame="void" rules="none">
513<col class="field-name" />
514<col class="field-body" />
515<tbody valign="top">
516<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
517</tr>
518</tbody>
519</table>
520<table class="docutils field-list" frame="void" rules="none">
521<col class="field-name" />
522<col class="field-body" />
523<tbody valign="top">
524<tr class="field"><th class="field-name" colspan="2">Specializations model:</th></tr>
525<tr><td>&nbsp;</td><td class="field-body"><a class="reference" href="#parameterspec"><span class="concept">ParameterSpec</span></a></td>
526</tr>
527</tbody>
528</table>
529<pre class="literal-block">
530template &lt;class Tag, class Predicate = <em>unspecified</em>&gt;
531struct optional;
532
533template &lt;class Tag, class Predicate = <em>unspecified</em>&gt;
534struct required;
535</pre>
536<p>The default value of <tt class="docutils literal"><span class="pre">Predicate</span></tt> is an unspecified <a class="reference" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> that returns
537<tt class="docutils literal"><span class="pre">mpl::true_</span></tt> for any argument.</p>
538</div>
539</div>
540<hr class="docutils" />
541<div class="section" id="metafunctions">
542<h1><a class="toc-backref" href="#id36" name="metafunctions">5&nbsp;&nbsp;&nbsp;Metafunctions</a></h1>
543<p>A <a class="reference" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> is conceptually a function that operates on, and
544returns, C++ types.</p>
545<div class="section" id="binding">
546<h2><a class="toc-backref" href="#id37" name="binding">5.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">binding</span></tt></a></h2>
547<p>Returns the result type of indexing an argument pack with a
548<a class="reference" href="#keyword-tag-type">keyword tag type</a> or with a <a class="reference" href="#tagged-default">tagged default</a>.</p>
549<table class="docutils field-list" frame="void" rules="none">
550<col class="field-name" />
551<col class="field-body" />
552<tbody valign="top">
553<tr class="field"><th class="field-name">Defined n:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/binding.hpp">boost/parameter/binding.hpp</a></td>
554</tr>
555</tbody>
556</table>
557<pre class="literal-block">
558template &lt;class A, class K, class D = void&gt;
559struct binding
560{
561    typedef … type;
562};
563</pre>
564<table class="docutils field-list" frame="void" rules="none">
565<col class="field-name" />
566<col class="field-body" />
567<tbody valign="top">
568<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">A</span></tt> is a model of <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</td>
569</tr>
570<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the reference type of the <a class="reference" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal"><span class="pre">A</span></tt>
571having <a class="reference" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal"><span class="pre">K</span></tt>, if any.  If no such <a class="reference" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal"><span class="pre">D</span></tt>.</td>
572</tr>
573</tbody>
574</table>
575</div>
576<div class="section" id="lazy-binding">
577<h2><a class="toc-backref" href="#id38" name="lazy-binding">5.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">lazy_binding</span></tt></a></h2>
578<p>Returns the result type of indexing an argument pack with a <a class="reference" href="#tagged-lazy-default">tagged lazy default</a>.</p>
579<table class="docutils field-list" frame="void" rules="none">
580<col class="field-name" />
581<col class="field-body" />
582<tbody valign="top">
583<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/binding.hpp">boost/parameter/binding.hpp</a></td>
584</tr>
585</tbody>
586</table>
587<pre class="literal-block">
588template &lt;class A, class K, class F&gt;
589struct lazy_binding
590{
591    typedef … type;
592};
593</pre>
594<table class="docutils field-list" frame="void" rules="none">
595<col class="field-name" />
596<col class="field-body" />
597<tbody valign="top">
598<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">A</span></tt> is a model of <a class="reference" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</td>
599</tr>
600<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the reference type of the <a class="reference" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal"><span class="pre">A</span></tt>
601having <a class="reference" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal"><span class="pre">K</span></tt>, if any.  If no such <a class="reference" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal"><span class="pre">boost::</span></tt><a class="reference" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a><tt class="docutils literal"><span class="pre">&lt;F()&gt;::type</span></tt>.<a class="footnote-reference" href="#no-result-of" id="id16" name="id16"><sup>2</sup></a></td>
602</tr>
603</tbody>
604</table>
605</div>
606</div>
607<hr class="docutils" />
608<div class="section" id="code-generation-macros">
609<h1><a class="toc-backref" href="#id39" name="code-generation-macros">6&nbsp;&nbsp;&nbsp;Code Generation Macros</a></h1>
610<p>Macros in this section can be used to ease the writing of code
611using the Parameter libray by eliminating repetitive boilerplate.</p>
612<div class="section" id="boost-parameter-fun-r-n-l-h-p">
613<h2><a class="toc-backref" href="#id40" name="boost-parameter-fun-r-n-l-h-p">6.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_FUN(r,n,l,h,p)</span></tt></a></h2>
614<p>Generates a sequence of <a class="reference" href="index.html#forwarding-functions">forwarding function</a> templates named
615<tt class="docutils literal"><span class="pre">n</span></tt>, with arities ranging from <tt class="docutils literal"><span class="pre">l</span></tt> to <tt class="docutils literal"><span class="pre">h</span></tt> , returning <tt class="docutils literal"><span class="pre">r</span></tt>,
616and using <tt class="docutils literal"><span class="pre">p</span></tt> to control overload resolution and assign tags to
617positional arguments.</p>
618<table class="docutils field-list" frame="void" rules="none">
619<col class="field-name" />
620<col class="field-body" />
621<tbody valign="top">
622<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/macros.hpp">boost/parameter/macros.hpp</a></td>
623</tr>
624</tbody>
625</table>
626<table class="docutils field-list" frame="void" rules="none">
627<col class="field-name" />
628<col class="field-body" />
629<tbody valign="top">
630<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal"><span class="pre">l</span></tt> and <tt class="docutils literal"><span class="pre">h</span></tt> are nonnegative integer tokens such
631that <tt class="docutils literal"><span class="pre">l</span></tt> &lt; <tt class="docutils literal"><span class="pre">h</span></tt></td>
632</tr>
633</tbody>
634</table>
635<dl class="docutils">
636<dt>Generates</dt>
637<dd><pre class="first last literal-block">
638template &lt;class A1, class A2, …class A##<strong>l</strong>&gt;
639r name(
640    A1 const&amp; a1, A2 const&amp; a2, …A<strong>l</strong> const&amp; x<strong>l</strong>
641  , typename <strong>p</strong>::match&lt;A1,A2,…A<strong>l</strong>&gt;::type p = <strong>p</strong>())
642{
643   return <strong>name</strong>_with_named_params(<strong>p</strong>(x1,x2,…x<strong>l</strong>));
644}
645
646template &lt;class A1, class A2, …class A<strong>l</strong>, class A##<a class="reference" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)&gt;
647r name(
648    A1 const&amp; a1, A2 const&amp; a2, …A<strong>l</strong> const&amp; x<strong>l</strong>
649  , A##<a class="reference" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>) const&amp; x##<a class="reference" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)
650  , typename <strong>p</strong>::match&lt;A1,A2,…A<strong>l</strong>,A##<a class="reference" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)&gt;::type p = <strong>p</strong>())
651{
652   return <strong>name</strong>_with_named_params(<strong>p</strong>(x1,x2,…x<strong>l</strong>,x##<a class="reference" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)));
653} <span class="vellipsis">
654  .
655  .
656  .
657</span>
658template &lt;class A1, class A2, …class A<strong>h</strong>&gt;
659r name(
660    A1 const&amp; a1, A2 const&amp; a2, …A<strong>h</strong> const&amp; x<strong>h</strong>
661  , typename <strong>p</strong>::match&lt;A1,A2,…A<strong>h</strong>&gt;::type p = <strong>p</strong>())
662{
663   return <strong>name</strong>_with_named_params(<strong>p</strong>(a1,a2,…a<strong>h</strong>));
664}
665</pre>
666</dd>
667</dl>
668</div>
669<div class="section" id="boost-parameter-keyword-n-k">
670<h2><a class="toc-backref" href="#id41" name="boost-parameter-keyword-n-k">6.2&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_KEYWORD(n,k)</span></tt></a></h2>
671<p>Generates the declaration of a <a class="reference" href="#keyword-tag-type">keyword tag type</a> named <tt class="docutils literal"><span class="pre">k</span></tt> in
672namespace <tt class="docutils literal"><span class="pre">n</span></tt>, and a corresponding <a class="reference" href="#keyword-object">keyword object</a> definition in
673the enclosing namespace.</p>
674<table class="docutils field-list" frame="void" rules="none">
675<col class="field-name" />
676<col class="field-body" />
677<tbody valign="top">
678<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/keyword.hpp">boost/parameter/keyword.hpp</a></td>
679</tr>
680</tbody>
681</table>
682<dl class="docutils">
683<dt>Generates</dt>
684<dd><pre class="first last literal-block">
685namespace <strong>n</strong> { struct <strong>k</strong>; }
686namespace {
687  boost::parameter::keyword&lt;<em>tag-namespace</em>::<strong>k</strong>&gt;&amp; <strong>k</strong>
688  = boost::parameter::keyword&lt;<em>tag-namespace</em>::<strong>k</strong>&gt;::get();
689}
690</pre>
691</dd>
692</dl>
693</div>
694<div class="section" id="boost-parameter-match-p-a-x">
695<h2><a class="toc-backref" href="#id42" name="boost-parameter-match-p-a-x">6.3&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MATCH(p,a,x)</span></tt></a></h2>
696<p>Generates a defaulted parameter declaration for a <a class="reference" href="index.html#forwarding-functions">forwarding
697function</a>.</p>
698<table class="docutils field-list" frame="void" rules="none">
699<col class="field-name" />
700<col class="field-body" />
701<tbody valign="top">
702<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/match.hpp">boost/parameter/match.hpp</a></td>
703</tr>
704</tbody>
705</table>
706<table class="docutils field-list" frame="void" rules="none">
707<col class="field-name" />
708<col class="field-body" />
709<tbody valign="top">
710<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><p class="first"><tt class="docutils literal"><span class="pre">a</span></tt> is a <a class="reference" href="http://www.boost.org/libs/preprocessor/doc/data.html">Boost.Preprocessor sequence</a> 
711of the form</p>
712<pre class="last literal-block">
713(A0)(A1)…(A<em>n</em>)
714</pre>
715</td>
716</tr>
717</tbody>
718</table>
719<dl class="docutils">
720<dt>Generates</dt>
721<dd><pre class="first last literal-block">
722typename <strong>p</strong>::match&lt;<strong>A0</strong>,<strong>A1</strong>…,<strong>A</strong><em>n</em>&gt;::type <strong>x</strong> = <strong>p</strong>()
723</pre>
724</dd>
725</dl>
726</div>
727</div>
728<div class="section" id="configuration-macros">
729<h1><a class="toc-backref" href="#id43" name="configuration-macros">7&nbsp;&nbsp;&nbsp;Configuration Macros</a></h1>
730<div class="section" id="boost-parameter-max-arity">
731<h2><a class="toc-backref" href="#id44" name="boost-parameter-max-arity">7.1&nbsp;&nbsp;&nbsp;<tt class="docutils literal"><span class="pre">BOOST_PARAMETER_MAX_ARITY</span></tt></a></h2>
732<p>Determines the maximum number of arguments supported by the
733library.  Will only be <tt class="docutils literal"><span class="pre">#defined</span></tt> by the library if it is not
734already <tt class="docutils literal"><span class="pre">#defined</span></tt>.</p>
735<table class="docutils field-list" frame="void" rules="none">
736<col class="field-name" />
737<col class="field-body" />
738<tbody valign="top">
739<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference" href="../../../../boost/parameter/config.hpp">boost/parameter/config.hpp</a></td>
740</tr>
741</tbody>
742</table>
743<table class="docutils field-list" frame="void" rules="none">
744<col class="field-name" />
745<col class="field-body" />
746<tbody valign="top">
747<tr class="field"><th class="field-name">Default Value:</th><td class="field-body"><tt class="docutils literal"><span class="pre">5</span></tt></td>
748</tr>
749</tbody>
750</table>
751</div>
752</div>
753<div class="section" id="tutorial">
754<h1><a class="toc-backref" href="#id45" name="tutorial">8&nbsp;&nbsp;&nbsp;Tutorial</a></h1>
755<p>Follow <a class="reference" href="index.html#tutorial">this link</a> to the Boost.Parameter tutorial
756documentation.</p>
757<hr class="docutils" />
758<table class="docutils footnote" frame="void" id="thread" rules="none">
759<colgroup><col class="label" /><col /></colgroup>
760<tbody valign="top">
761<tr><td class="label"><a class="fn-backref" href="#id2" name="thread">[1]</a></td><td>References to tag objects may be initialized multiple
762times.  This scenario can only occur in the presence of
763threading.  Because the C++ standard doesn't consider threading,
764it doesn't explicitly allow or forbid multiple initialization of
765references.  That said, it's hard to imagine an implementation
766where it could make a difference.</td></tr>
767</tbody>
768</table>
769<table class="docutils footnote" frame="void" id="no-result-of" rules="none">
770<colgroup><col class="label" /><col /></colgroup>
771<tbody valign="top">
772<tr><td class="label"><a name="no-result-of">[2]</a></td><td><em>(<a class="fn-backref" href="#id10">1</a>, <a class="fn-backref" href="#id16">2</a>)</em> Where <a class="reference" href="../../../utility/utility.htm#BOOST_NO_RESULT_OF"><tt class="docutils literal"><span class="pre">BOOST_NO_RESULT_OF</span></tt></a> is <tt class="docutils literal"><span class="pre">#defined</span></tt>,
773<tt class="docutils literal"><span class="pre">boost::</span></tt><a class="reference" href="../../../utility/utility.htm#result_of"><tt class="docutils literal"><span class="pre">result_of</span></tt></a><tt class="docutils literal"><span class="pre">&lt;F()&gt;::type</span></tt> is replaced by
774<tt class="docutils literal"><span class="pre">F::result_type</span></tt>.</td></tr>
775</tbody>
776</table>
777</div>
778</div>
779<hr class="docutils footer" />
780<div class="footer">
781Generated on: 2005-08-05 14:58 UTC.
782Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
783</div>
784</body>
785</html>
Note: See TracBrowser for help on using the repository browser.