1137 lines
63 KiB
HTML
1137 lines
63 KiB
HTML
<?xml version="1.0" encoding="utf-8" ?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta name="generator" content="Docutils 0.7: http://docutils.sourceforge.net/" />
|
|
<title>The Boost Parameter Library Reference Documentation</title>
|
|
<meta name="authors" content="David Abrahams Daniel Wallin" />
|
|
<meta name="organization" content="BoostPro Computing" />
|
|
<meta name="date" content="2005-07-17" />
|
|
<meta name="copyright" content="Copyright David Abrahams, Daniel Wallin 2005-2009. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)" />
|
|
<link rel="stylesheet" href="rst.css" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div class="document" id="the-boost-parameter-library-reference-documentation">
|
|
<h1 class="title">The Boost Parameter Library Reference Documentation</h1>
|
|
<table class="docinfo" frame="void" rules="none">
|
|
<col class="docinfo-name" />
|
|
<col class="docinfo-content" />
|
|
<tbody valign="top">
|
|
<tr><th class="docinfo-name">Authors:</th>
|
|
<td>David Abrahams
|
|
<br />Daniel Wallin</td></tr>
|
|
<tr><th class="docinfo-name">Contact:</th>
|
|
<td><a class="first reference external" href="mailto:dave@boost-consulting.com">dave@boost-consulting.com</a>, <a class="last reference external" href="mailto:daniel@boostpro.com">daniel@boostpro.com</a></td></tr>
|
|
<tr><th class="docinfo-name">Organization:</th>
|
|
<td><a class="first last reference external" href="http://www.boostpro.com">BoostPro Computing</a></td></tr>
|
|
<tr><th class="docinfo-name">Date:</th>
|
|
<td>2005-07-17</td></tr>
|
|
<tr><th class="docinfo-name">Copyright:</th>
|
|
<td>Copyright David Abrahams, Daniel Wallin
|
|
2005-2009. Distributed under the Boost Software License,
|
|
Version 1.0. (See accompanying file LICENSE_1_0.txt
|
|
or copy at <a class="reference external" href="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</td></tr>
|
|
</tbody>
|
|
</table>
|
|
<p><a class="reference external" href="../../../../index.htm"><img alt="Boost" src="../../../../boost.png" /></a></p>
|
|
<hr class="docutils" />
|
|
<div class="contents topic" id="contents">
|
|
<p class="topic-title first">Contents</p>
|
|
<ul class="auto-toc simple">
|
|
<li><a class="reference internal" href="#preliminaries" id="id30">1 Preliminaries</a><ul class="auto-toc">
|
|
<li><a class="reference internal" href="#namespaces" id="id31">1.1 Namespaces</a></li>
|
|
<li><a class="reference internal" href="#exceptions" id="id32">1.2 Exceptions</a></li>
|
|
<li><a class="reference internal" href="#thread-safety" id="id33">1.3 Thread Safety</a></li>
|
|
<li><a class="reference internal" href="#typography" id="id34">1.4 Typography</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="reference internal" href="#terminology" id="id35">2 Terminology</a></li>
|
|
<li><a class="reference internal" href="#concepts" id="id36">3 Concepts</a><ul class="auto-toc">
|
|
<li><a class="reference internal" href="#argumentpack" id="id37">3.1 <span class="concept">ArgumentPack</span></a></li>
|
|
<li><a class="reference internal" href="#id5" id="id38">3.2 <span class="concept">ParameterSpec</span></a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="reference internal" href="#class-templates" id="id39">4 Class Templates</a><ul class="auto-toc">
|
|
<li><a class="reference internal" href="#id7" id="id40">4.1 <tt class="docutils literal">keyword</tt></a></li>
|
|
<li><a class="reference internal" href="#parameters" id="id41">4.2 <tt class="docutils literal">parameters</tt></a></li>
|
|
<li><a class="reference internal" href="#optional-required" id="id42">4.3 <tt class="docutils literal">optional</tt>, <tt class="docutils literal">required</tt></a></li>
|
|
<li><a class="reference internal" href="#deduced" id="id43">4.4 <tt class="docutils literal">deduced</tt></a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="reference internal" href="#metafunctions" id="id44">5 Metafunctions</a><ul class="auto-toc">
|
|
<li><a class="reference internal" href="#binding" id="id45">5.1 <tt class="docutils literal">binding</tt></a></li>
|
|
<li><a class="reference internal" href="#lazy-binding" id="id46">5.2 <tt class="docutils literal">lazy_binding</tt></a></li>
|
|
<li><a class="reference internal" href="#value-type" id="id47">5.3 <tt class="docutils literal">value_type</tt></a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="reference internal" href="#code-generation-macros" id="id48">6 Code Generation Macros</a><ul class="auto-toc">
|
|
<li><a class="reference internal" href="#boost-parameter-function-result-name-tag-namespace-arguments" id="id49">6.1 <tt class="docutils literal">BOOST_PARAMETER_FUNCTION(result,name,tag_namespace,arguments)</tt></a></li>
|
|
<li><a class="reference internal" href="#boost-parameter-member-function-result-name-tag-namespace-arguments" id="id50">6.2 <tt class="docutils literal">BOOST_PARAMETER_MEMBER_FUNCTION(result,name,tag_namespace,arguments)</tt></a></li>
|
|
<li><a class="reference internal" href="#boost-parameter-constructor-cls-impl-tag-namespace-arguments" id="id51">6.3 <tt class="docutils literal">BOOST_PARAMETER_CONSTRUCTOR(cls, impl, tag_namespace, arguments)</tt></a></li>
|
|
<li><a class="reference internal" href="#boost-parameter-name-name" id="id52">6.4 <tt class="docutils literal">BOOST_PARAMETER_NAME(name)</tt></a></li>
|
|
<li><a class="reference internal" href="#boost-parameter-template-keyword-name" id="id53">6.5 <tt class="docutils literal">BOOST_PARAMETER_TEMPLATE_KEYWORD(name)</tt></a></li>
|
|
<li><a class="reference internal" href="#boost-parameter-fun-r-n-l-h-p" id="id54">6.6 <tt class="docutils literal">BOOST_PARAMETER_FUN(r,n,l,h,p)</tt></a></li>
|
|
<li><a class="reference internal" href="#boost-parameter-keyword-n-k" id="id55">6.7 <tt class="docutils literal">BOOST_PARAMETER_KEYWORD(n,k)</tt></a></li>
|
|
<li><a class="reference internal" href="#boost-parameter-match-p-a-x" id="id56">6.8 <tt class="docutils literal">BOOST_PARAMETER_MATCH(p,a,x)</tt></a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="reference internal" href="#configuration-macros" id="id57">7 Configuration Macros</a><ul class="auto-toc">
|
|
<li><a class="reference internal" href="#boost-parameter-max-arity" id="id58">7.1 <tt class="docutils literal">BOOST_PARAMETER_MAX_ARITY</tt></a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="reference internal" href="#tutorial" id="id59">8 Tutorial</a></li>
|
|
</ul>
|
|
</div>
|
|
<hr class="docutils" />
|
|
<div class="section" id="preliminaries">
|
|
<h1><a class="toc-backref" href="#id30">1 Preliminaries</a></h1>
|
|
<p>This section covers some basic information you'll need to know in
|
|
order to understand this reference</p>
|
|
<div class="section" id="namespaces">
|
|
<h2><a class="toc-backref" href="#id31">1.1 Namespaces</a></h2>
|
|
<p>In this document, all unqualified identifiers should be assumed to
|
|
be defined in namespace <tt class="docutils literal"><span class="pre">boost::parameter</span></tt> unless otherwise
|
|
specified.</p>
|
|
</div>
|
|
<div class="section" id="exceptions">
|
|
<h2><a class="toc-backref" href="#id32">1.2 Exceptions</a></h2>
|
|
<p>No operation described in this document
|
|
throws an exception unless otherwise specified.</p>
|
|
</div>
|
|
<div class="section" id="thread-safety">
|
|
<h2><a class="toc-backref" href="#id33">1.3 Thread Safety</a></h2>
|
|
<p>All components of this library can be used safely from multiple
|
|
threads without synchronization.<a class="footnote-reference" href="#thread" id="id2"><sup>1</sup></a></p>
|
|
</div>
|
|
<div class="section" id="typography">
|
|
<h2><a class="toc-backref" href="#id34">1.4 Typography</a></h2>
|
|
<p>Names written in <span class="concept">sans serif type</span> represent <a class="reference external" href="http://www.boost.org/more/generic_programming.html#concept">concepts</a>.</p>
|
|
<p>In code blocks, <em>italic type</em> represents unspecified text that
|
|
satisfies the requirements given in the detailed description that
|
|
follows the code block.</p>
|
|
<p>In a specification of the tokens generated by a macro, <strong>bold
|
|
type</strong> is used to highlight the position of the expanded macro
|
|
argument in the result.</p>
|
|
<p>The special character β represents the value of <a class="reference internal" href="#boost-parameter-max-arity"><tt class="docutils literal">BOOST_PARAMETER_MAX_ARITY</tt></a>.</p>
|
|
</div>
|
|
</div>
|
|
<hr class="docutils" />
|
|
<div class="section" id="terminology">
|
|
<h1><a class="toc-backref" href="#id35">2 Terminology</a></h1>
|
|
<dl class="docutils" id="kw">
|
|
<dt>keyword</dt>
|
|
<dd>The name of a function parameter.</dd>
|
|
</dl>
|
|
<span class="target" id="keyword-tag-type"></span><dl class="docutils">
|
|
<dt>keyword tag type</dt>
|
|
<dd>A type used to uniquely identify a function parameter. Typically
|
|
its name will be the same as that of the parameter.</dd>
|
|
</dl>
|
|
<span class="target" id="positional"></span><dl class="docutils">
|
|
<dt>positional argument</dt>
|
|
<dd>An argument passed with no explicit keyword. Its parameter is
|
|
determined in the usual C++ way: by position with respect to a
|
|
parameter list.</dd>
|
|
</dl>
|
|
<span class="target" id="tag-type"></span><dl class="docutils">
|
|
<dt>tag type</dt>
|
|
<dd>Shorthand for “<a class="reference internal" href="#keyword-tag-type">keyword tag type</a>.”</dd>
|
|
</dl>
|
|
<span class="target" id="keyword-object"></span><dl class="docutils">
|
|
<dt>keyword object</dt>
|
|
<dd>An instance of <a class="reference internal" href="#keyword"><tt class="docutils literal">keyword</tt></a> <tt class="docutils literal"><T></tt> for some <a class="reference internal" href="#tag-type">tag type</a> <tt class="docutils literal">T</tt>.</dd>
|
|
</dl>
|
|
<span class="target" id="tagged-reference"></span><dl class="docutils">
|
|
<dt>tagged reference</dt>
|
|
<dd><p class="first">An object whose type is associated with a <a class="reference internal" href="#keyword-tag-type">keyword tag type</a> (the
|
|
object's <em>keyword</em>), and that holds a reference (to the object's
|
|
<em>value</em>).</p>
|
|
<p class="last">As a shorthand, a “tagged reference to <tt class="docutils literal">x</tt>” means a tagged
|
|
reference whose <em>value</em> is <tt class="docutils literal">x</tt>.</p>
|
|
</dd>
|
|
</dl>
|
|
<span class="target" id="tagged-default"></span><dl class="docutils">
|
|
<dt>tagged default</dt>
|
|
<dd>A <a class="reference internal" href="#tagged-reference">tagged reference</a> whose <em>value</em> represents the value of a
|
|
default argument.</dd>
|
|
</dl>
|
|
<span class="target" id="tagged-lazy-default"></span><dl class="docutils">
|
|
<dt>tagged lazy default</dt>
|
|
<dd>A <a class="reference internal" href="#tagged-reference">tagged reference</a> whose <em>value</em>, when invoked with no
|
|
arguments, computes a default argument value.</dd>
|
|
</dl>
|
|
<span class="target" id="intended-argument-type"></span><dl class="docutils">
|
|
<dt>intended argument type</dt>
|
|
<dd>The <em>intended argument type</em> of a single-element <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> is the
|
|
type of its element's <em>value</em>. The intended argument type of any other
|
|
type <tt class="docutils literal">X</tt> is <tt class="docutils literal">X</tt> itself.</dd>
|
|
</dl>
|
|
<div class="note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">In this reference, we will use concept names (and other names)
|
|
to describe both types and objects, depending on context. So
|
|
for example, “an <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a>” can refer to a type that
|
|
models <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <em>or</em> an object of such a type.</p>
|
|
</div>
|
|
</div>
|
|
<hr class="docutils" />
|
|
<div class="section" id="concepts">
|
|
<h1><a class="toc-backref" href="#id36">3 Concepts</a></h1>
|
|
<p>This section describes the generic type <a class="reference external" href="http://www.boost.org/more/generic_programming.html#concept">concepts</a> used by the Parameter library.</p>
|
|
<div class="section" id="argumentpack">
|
|
<h2><a class="toc-backref" href="#id37">3.1 <span class="concept">ArgumentPack</span></a></h2>
|
|
<p>An <span class="concept">ArgumentPack</span> is a collection of <a class="reference internal" href="#tagged-reference">tagged reference</a>s to the
|
|
actual arguments passed to a function. Every <span class="concept">ArgumentPack</span> is
|
|
also a valid MPL <a class="reference external" href="../../../mpl/doc/refmanual/forward-sequence.html"><span class="concept">Forward Sequence</span></a> consisting of the <a class="reference internal" href="#keyword-tag-type">keyword tag type</a>s in its <a class="reference internal" href="#tagged-reference">tagged reference</a>s.</p>
|
|
<div class="section" id="requirements">
|
|
<h3>Requirements</h3>
|
|
<p>In the table below,</p>
|
|
<ul class="simple">
|
|
<li><tt class="docutils literal">A</tt> is a model of <span class="concept">ArgumentPack</span></li>
|
|
<li><tt class="docutils literal">x</tt> is an instance of <tt class="docutils literal">A</tt></li>
|
|
<li><tt class="docutils literal">u</tt> is a <a class="reference internal" href="#keyword-object">keyword object</a> of type <tt class="docutils literal">K</tt></li>
|
|
<li><tt class="docutils literal">v</tt> is a <a class="reference internal" href="#tagged-default">tagged default</a> with <a class="reference internal" href="#tag-type">tag type</a> <tt class="docutils literal">L</tt> and <em>value</em> of type <tt class="docutils literal">D</tt></li>
|
|
<li><tt class="docutils literal">w</tt> is a <a class="reference internal" href="#tagged-lazy-default">tagged lazy default</a> with <a class="reference internal" href="#tag-type">tag type</a> <tt class="docutils literal">M</tt> and <em>value</em> of type <tt class="docutils literal">E const</tt></li>
|
|
<li><tt class="docutils literal">z</tt> is an <span class="concept">ArgumentPack</span> containing a single element (as created by <a class="reference internal" href="#keyword"><tt class="docutils literal">keyword</tt></a><tt class="docutils literal"><span class="pre"><…>::operator=</span></tt>)</li>
|
|
</ul>
|
|
<p>Any exceptions are thrown from the invocation of <tt class="docutils literal">w</tt>'s <em>value</em>
|
|
will be propagated to the caller.</p>
|
|
<table border="1" class="docutils">
|
|
<caption><span class="concept">ArgumentPack</span> requirements</caption>
|
|
<colgroup>
|
|
<col width="11%" />
|
|
<col width="31%" />
|
|
<col width="19%" />
|
|
<col width="40%" />
|
|
</colgroup>
|
|
<thead valign="bottom">
|
|
<tr><th class="head">Expression</th>
|
|
<th class="head">Type</th>
|
|
<th class="head">Requirements</th>
|
|
<th class="head">Semantics/Notes</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody valign="top">
|
|
<tr><td><tt class="docutils literal">x[u]</tt></td>
|
|
<td><tt class="docutils literal"><span class="pre">binding<A,K>::type</span></tt></td>
|
|
<td><tt class="docutils literal">x</tt> contains an
|
|
element <em>b</em> whose
|
|
<a class="reference internal" href="#kw">keyword</a> is <tt class="docutils literal">K</tt></td>
|
|
<td>Returns <em>b</em>'s <em>value</em> (by
|
|
reference).</td>
|
|
</tr>
|
|
<tr><td><tt class="docutils literal">x[u]</tt></td>
|
|
<td><tt class="docutils literal"><span class="pre">binding<A,L,D>::type</span></tt></td>
|
|
<td><em>none</em></td>
|
|
<td>If <tt class="docutils literal">x</tt> contains an element <em>b</em> whose
|
|
<a class="reference internal" href="#kw">keyword</a> is the same as <tt class="docutils literal">u</tt>'s,
|
|
returns <em>b</em>'s <em>value</em> (by
|
|
reference). Otherwise, returns <tt class="docutils literal">u</tt>'s <em>value</em>.</td>
|
|
</tr>
|
|
<tr><td><tt class="docutils literal">x[w]</tt></td>
|
|
<td><tt class="docutils literal"><span class="pre">lazy_binding<A,M,E>::type</span></tt></td>
|
|
<td><em>none</em></td>
|
|
<td>If <tt class="docutils literal">x</tt> contains an element <em>b</em> whose
|
|
<a class="reference internal" href="#kw">keyword</a> is the same as <tt class="docutils literal">w</tt>'s,
|
|
returns <em>b</em>'s <em>value</em> (by
|
|
reference). Otherwise, invokes <tt class="docutils literal">w</tt>'s <em>value</em> and returns the result.</td>
|
|
</tr>
|
|
<tr><td><tt class="docutils literal">x, z</tt></td>
|
|
<td>Model of <span class="concept">ArgumentPack</span></td>
|
|
<td><em>none</em></td>
|
|
<td>Returns an <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing
|
|
all the elements of both <tt class="docutils literal">x</tt> and
|
|
<tt class="docutils literal">z</tt>.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="id5">
|
|
<span id="parameterspec"></span><h2><a class="toc-backref" href="#id38">3.2 <span class="concept">ParameterSpec</span></a></h2>
|
|
<p>A <span class="concept">ParameterSpec</span> describes the type requirements for arguments
|
|
corresponding to a given <a class="reference internal" href="#kw">keyword</a> and indicates whether the argument
|
|
is optional or required. The table below details the allowed forms
|
|
and describes their condition for satisfaction by an actual
|
|
argument type. In each row,</p>
|
|
<ul class="simple" id="conditions">
|
|
<li><tt class="docutils literal">K</tt> is the <span class="concept">ParameterSpec</span>'s <a class="reference internal" href="#keyword-tag-type">keyword tag type</a></li>
|
|
<li><tt class="docutils literal">A</tt> is an <a class="reference internal" href="#intended-argument-type">intended argument type</a> associated with <tt class="docutils literal">K</tt>, if any</li>
|
|
<li><tt class="docutils literal">F</tt> is a unary <a class="reference external" href="../../../mpl/doc/refmanual/lambda-expression.html">MPL lambda expression</a></li>
|
|
</ul>
|
|
<table border="1" class="docutils">
|
|
<caption><span class="concept">ParameterSpec</span> allowed forms and conditions of satisfaction</caption>
|
|
<colgroup>
|
|
<col width="32%" />
|
|
<col width="21%" />
|
|
<col width="47%" />
|
|
</colgroup>
|
|
<thead valign="bottom">
|
|
<tr><th class="head">Type</th>
|
|
<th class="head"><tt class="docutils literal">A</tt> required</th>
|
|
<th class="head">Condition <tt class="docutils literal">A</tt> must satisfy</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody valign="top">
|
|
<tr><td><tt class="docutils literal">K</tt></td>
|
|
<td>no</td>
|
|
<td><em>n/a</em></td>
|
|
</tr>
|
|
<tr><td><a class="reference internal" href="#optional"><tt class="docutils literal">optional</tt></a><tt class="docutils literal"><K,F></tt></td>
|
|
<td>no</td>
|
|
<td><tt class="docutils literal"><span class="pre">mpl::apply<F,A>::type::value</span></tt>
|
|
is <tt class="docutils literal">true</tt>.</td>
|
|
</tr>
|
|
<tr><td><a class="reference internal" href="#required"><tt class="docutils literal">required</tt></a><tt class="docutils literal"><K,F></tt></td>
|
|
<td>yes</td>
|
|
<td><tt class="docutils literal"><span class="pre">mpl::apply<F,A>::type::value</span></tt>
|
|
is <tt class="docutils literal">true</tt>.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>The information in a <span class="concept">ParameterSpec</span> is used to <a class="reference external" href="index.html#controlling-overload-resolution">limit</a> the
|
|
arguments that will be matched by <a class="reference external" href="index.html#forwarding-functions">forwarding functions</a>.</p>
|
|
</div>
|
|
</div>
|
|
<hr class="docutils" />
|
|
<div class="section" id="class-templates">
|
|
<h1><a class="toc-backref" href="#id39">4 Class Templates</a></h1>
|
|
<div class="section" id="id7">
|
|
<span id="keyword"></span><h2><a class="toc-backref" href="#id40">4.1 <tt class="docutils literal">keyword</tt></a></h2>
|
|
<p>The type of every <a class="reference internal" href="#keyword-object">keyword object</a> is a specialization of <tt class="docutils literal">keyword</tt>.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/keyword.hpp">boost/parameter/keyword.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<pre class="literal-block">
|
|
template <class Tag>
|
|
struct keyword
|
|
{
|
|
template <class T> <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#operator">operator=</a>(T& value) const;
|
|
template <class T> <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#operator">operator=</a>(T const& value) const;
|
|
|
|
template <class T> <em>tagged default</em> <a class="reference internal" href="#id9">operator|</a>(T& x) const;
|
|
template <class T> <em>tagged default</em> <a class="reference internal" href="#id9">operator|</a>(T const& x) const;
|
|
|
|
template <class F> <em>tagged lazy default</em> <a class="reference internal" href="#id10">operator||</a>(F const&) const;
|
|
|
|
static keyword<Tag>& <a class="reference internal" href="#get">get</a>();
|
|
};
|
|
</pre>
|
|
<dl class="docutils" id="operator">
|
|
<dt><tt class="docutils literal">operator=</tt></dt>
|
|
<dd><pre class="first literal-block">
|
|
template <class T> <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator=(T& value) const;
|
|
template <class T> <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator=(T const& value) const;
|
|
</pre>
|
|
<table class="last docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Requires:</th><td class="field-body">nothing</td>
|
|
</tr>
|
|
<tr class="field"><th class="field-name">Returns:</th><td class="field-body">an <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing a single <a class="reference internal" href="#tagged-reference">tagged reference</a> to
|
|
<tt class="docutils literal">value</tt> with <a class="reference internal" href="#kw">keyword</a> <tt class="docutils literal">Tag</tt></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="docutils" id="id9">
|
|
<dt><tt class="docutils literal">operator|</tt></dt>
|
|
<dd><pre class="first literal-block">
|
|
template <class T> <em>tagged default</em> operator|(T& x) const;
|
|
template <class T> <em>tagged default</em> operator|(T const& x) const;
|
|
</pre>
|
|
<table class="last docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a <a class="reference internal" href="#tagged-default">tagged default</a> with <em>value</em> <tt class="docutils literal">x</tt> and <a class="reference internal" href="#kw">keyword</a> <tt class="docutils literal">Tag</tt>.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="docutils" id="id10">
|
|
<dt><tt class="docutils literal">operator||</tt></dt>
|
|
<dd><pre class="first literal-block">
|
|
template <class F> <em>tagged lazy default</em> operator||(F const& g) const;
|
|
</pre>
|
|
<table class="last docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal">g()</tt> is valid, with type <tt class="docutils literal">boost::</tt><a class="reference external" href="../../../utility/utility.htm#result_of"><tt class="docutils literal">result_of</tt></a><tt class="docutils literal"><span class="pre"><F()>::type</span></tt>.<a class="footnote-reference" href="#no-result-of" id="id11"><sup>2</sup></a></td>
|
|
</tr>
|
|
<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a <a class="reference internal" href="#tagged-lazy-default">tagged lazy default</a> with <em>value</em> <tt class="docutils literal">g</tt> and <a class="reference internal" href="#kw">keyword</a> <tt class="docutils literal">Tag</tt>.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="docutils" id="get">
|
|
<dt><tt class="docutils literal">get</tt></dt>
|
|
<dd><pre class="first literal-block">
|
|
static keyword<Tag>& get();
|
|
</pre>
|
|
<table class="last docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Returns:</th><td class="field-body">a “singleton instance”: the same object will be
|
|
returned on each invocation of <tt class="docutils literal">get()</tt>.</td>
|
|
</tr>
|
|
<tr class="field"><th class="field-name">Thread Safety:</th><td class="field-body"><tt class="docutils literal">get()</tt> can be called from multiple threads
|
|
simultaneously.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="parameters">
|
|
<h2><a class="toc-backref" href="#id41">4.2 <tt class="docutils literal">parameters</tt></a></h2>
|
|
<p>Provides an interface for assembling the actual arguments to a
|
|
<cite>forwarding function</cite> into an <span class="concept">ArgumentPack</span>, in which any
|
|
<a class="reference internal" href="#positional">positional</a> arguments will be tagged according to the
|
|
corresponding template argument to <tt class="docutils literal">parameters</tt>.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<pre class="literal-block">
|
|
template <class P0 = <em>unspecified</em>, class P1 = <em>unspecified</em>, …class Pβ = <em>unspecified</em>>
|
|
struct parameters
|
|
{
|
|
template <class A0, class A1 = <em>unspecified</em>, …class Aβ = <em>unspecified</em>>
|
|
struct <a class="reference internal" href="#match">match</a>
|
|
{
|
|
typedef … type;
|
|
};
|
|
|
|
template <class A0>
|
|
<a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#id13">operator()</a>(A0& a0) const;
|
|
|
|
template <class A0, class A1>
|
|
<a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#id13">operator()</a>(A0& a0, A1& a1) const;
|
|
|
|
<span class="vellipsis">⋮</span>
|
|
|
|
template <class A0, class A1, …class Aβ>
|
|
<a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#id13">operator()</a>(A0& a0, A1& a1, …Aβ& aβ) const;
|
|
};
|
|
</pre>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal">P0</tt>, <tt class="docutils literal">P1</tt>, … <tt class="docutils literal">P</tt>β are models of <a class="reference internal" href="#parameterspec"><span class="concept">ParameterSpec</span></a>.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<div class="note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p>In this section, <tt class="docutils literal">R</tt><em>i</em> and <tt class="docutils literal">K</tt><em>i</em> are defined as
|
|
follows, for any argument type <tt class="docutils literal">A</tt><em>i</em>:</p>
|
|
<blockquote class="last">
|
|
<div class="line-block">
|
|
<div class="line">let <tt class="docutils literal">D0</tt> the set [d0, …, d<em>j</em>] of all <strong>deduced</strong> <em>parameter specs</em> in [<tt class="docutils literal">P0</tt>, …, <tt class="docutils literal">P</tt>β]</div>
|
|
<div class="line"><tt class="docutils literal">R</tt><em>i</em> is <tt class="docutils literal">A</tt><em>i</em>'s <a class="reference internal" href="#intended-argument-type">intended argument type</a></div>
|
|
<div class="line"><br /></div>
|
|
<div class="line">if <tt class="docutils literal">A</tt><em>i</em> is a result type of <tt class="docutils literal"><span class="pre">keyword<T>::</span></tt><a class="reference internal" href="#operator"><tt class="docutils literal">operator=</tt></a></div>
|
|
<div class="line">then</div>
|
|
<div class="line-block">
|
|
<div class="line"><tt class="docutils literal">K</tt><em>i</em> is <tt class="docutils literal">T</tt></div>
|
|
</div>
|
|
<div class="line">else</div>
|
|
<div class="line-block">
|
|
<div class="line">if some <tt class="docutils literal">A</tt><em>j</em> where <em>j</em>≤<em>i</em> is a result type of <tt class="docutils literal"><span class="pre">keyword<T>::</span></tt><a class="reference internal" href="#operator"><tt class="docutils literal">operator=</tt></a></div>
|
|
<div class="line"><em>or</em> some <tt class="docutils literal">P</tt><em>j</em> in <em>j</em>≤<em>i</em> is <strong>deduced</strong></div>
|
|
<div class="line">then</div>
|
|
<div class="line-block">
|
|
<div class="line">if some <em>parameter spec</em> <tt class="docutils literal">d</tt><em>j</em> in <tt class="docutils literal">D</tt><em>i</em> matches <tt class="docutils literal">A</tt><em>i</em></div>
|
|
<div class="line">then</div>
|
|
<div class="line-block">
|
|
<div class="line"><tt class="docutils literal">K</tt><em>i</em> is <tt class="docutils literal">d</tt><em>j</em>'s <a class="reference internal" href="#keyword-tag-type">keyword tag type</a>.</div>
|
|
<div class="line"><tt class="docutils literal">D</tt><sub>i+1</sub> is <tt class="docutils literal">D</tt><em>i</em> - [<tt class="docutils literal">d</tt><em>j</em>]</div>
|
|
</div>
|
|
</div>
|
|
<div class="line">else</div>
|
|
<div class="line-block">
|
|
<div class="line"><tt class="docutils literal">K</tt><em>i</em> is <tt class="docutils literal">P</tt><em>i</em>'s <a class="reference internal" href="#keyword-tag-type">keyword tag type</a>.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</blockquote>
|
|
</div>
|
|
<dl class="docutils" id="match">
|
|
<dt><tt class="docutils literal">match</tt></dt>
|
|
<dd><p class="first">A <a class="reference external" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> used to remove a <a class="reference external" href="index.html#forwarding-functions">forwarding function</a> from overload resolution.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Returns:</th><td class="field-body">if <tt class="docutils literal">P0</tt>, <tt class="docutils literal">P1</tt>, …<tt class="docutils literal">P</tt>β are <em>satisfied</em> (see
|
|
below), then <tt class="docutils literal"><span class="pre">parameters<P0,P1,…Pβ></span></tt>. Otherwise,
|
|
<tt class="docutils literal"><span class="pre">match<A0,A1,…Aβ>::type</span></tt> is not defined.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p><tt class="docutils literal">P0</tt>, <tt class="docutils literal">P1</tt>, …<tt class="docutils literal">P</tt>β are <strong>satisfied</strong> if, for
|
|
every <em>j</em> in 0…β, either:</p>
|
|
<ul class="last simple">
|
|
<li><tt class="docutils literal">P</tt><em>j</em> is the <em>unspecified</em> default</li>
|
|
<li><strong>or</strong>, <tt class="docutils literal">P</tt><em>j</em> is a <em>keyword tag type</em></li>
|
|
<li><strong>or</strong>, <tt class="docutils literal">P</tt><em>j</em> is <a class="reference internal" href="#optional"><tt class="docutils literal">optional</tt></a> <tt class="docutils literal"><X,F></tt> and either<ul>
|
|
<li><tt class="docutils literal">X</tt> is not <tt class="docutils literal">K</tt><em>i</em> for any <em>i</em>,</li>
|
|
<li><strong>or</strong> <tt class="docutils literal">X</tt> is some <tt class="docutils literal">K</tt><em>i</em> and <tt class="docutils literal"><span class="pre">mpl::apply<F,R</span></tt><em>i</em><tt class="docutils literal"><span class="pre">>::type::value</span></tt> is <tt class="docutils literal">true</tt></li>
|
|
</ul>
|
|
</li>
|
|
<li><strong>or</strong>, <tt class="docutils literal">P</tt><em>j</em> is <a class="reference internal" href="#required"><tt class="docutils literal">required</tt></a> <tt class="docutils literal"><X,F></tt>, and<ul>
|
|
<li><tt class="docutils literal">X</tt> is some <tt class="docutils literal">K</tt><em>i</em>, <strong>and</strong></li>
|
|
<li><tt class="docutils literal"><span class="pre">mpl::apply<F,R</span></tt><em>i</em><tt class="docutils literal"><span class="pre">>::type::value</span></tt> is <tt class="docutils literal">true</tt></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<dl class="docutils" id="id13">
|
|
<dt><tt class="docutils literal">operator()</tt></dt>
|
|
<dd><pre class="first literal-block">
|
|
template <class A0> <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> operator()(A0 const& a0) const;
|
|
|
|
<span class="vellipsis">⋮</span>
|
|
|
|
template <class A0, …class Aβ> <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> <a class="reference internal" href="#id13">operator()</a>(A0 const& a0, …Aβ const& aβ) const;
|
|
</pre>
|
|
<table class="last docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">An <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a> containing, for each <tt class="docutils literal">a</tt><em>i</em>,</p>
|
|
<ul class="last simple">
|
|
<li>if <tt class="docutils literal">a</tt><em>i</em>, is a single-element <span class="concept">ArgumentPack</span>, its element</li>
|
|
<li>Otherwise, a <a class="reference internal" href="#tagged-reference">tagged reference</a> with <a class="reference internal" href="#kw">keyword</a> <tt class="docutils literal">K</tt><em>i</em> and <em>value</em> <tt class="docutils literal">a</tt><em>i</em></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="optional-required">
|
|
<span id="required"></span><span id="optional"></span><h2><a class="toc-backref" href="#id42">4.3 <tt class="docutils literal">optional</tt>, <tt class="docutils literal">required</tt></a></h2>
|
|
<p>These templates describe the requirements on a function parameter.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name" colspan="2">Specializations model:</th></tr>
|
|
<tr><td> </td><td class="field-body"><a class="reference internal" href="#parameterspec"><span class="concept">ParameterSpec</span></a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<pre class="literal-block">
|
|
template <class Tag, class Predicate = <em>unspecified</em>>
|
|
struct optional;
|
|
|
|
template <class Tag, class Predicate = <em>unspecified</em>>
|
|
struct required;
|
|
</pre>
|
|
<p>The default value of <tt class="docutils literal">Predicate</tt> is an unspecified <a class="reference external" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> that returns
|
|
<tt class="docutils literal"><span class="pre">mpl::true_</span></tt> for any argument.</p>
|
|
</div>
|
|
<div class="section" id="deduced">
|
|
<h2><a class="toc-backref" href="#id43">4.4 <tt class="docutils literal">deduced</tt></a></h2>
|
|
<p>This template is used to wrap the <em>keyword tag</em> argument to
|
|
<tt class="docutils literal">optional</tt> or <tt class="docutils literal">required</tt>.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/parameters.hpp">boost/parameter/parameters.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<pre class="literal-block">
|
|
template <class Tag>
|
|
struct deduced;
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
<hr class="docutils" />
|
|
<div class="section" id="metafunctions">
|
|
<h1><a class="toc-backref" href="#id44">5 Metafunctions</a></h1>
|
|
<p>A <a class="reference external" href="../../../mpl/doc/refmanual/metafunction.html"><span class="concept">Metafunction</span></a> is conceptually a function that operates on, and
|
|
returns, C++ types.</p>
|
|
<div class="section" id="binding">
|
|
<h2><a class="toc-backref" href="#id45">5.1 <tt class="docutils literal">binding</tt></a></h2>
|
|
<p>Returns the result type of indexing an argument pack with a
|
|
<a class="reference internal" href="#keyword-tag-type">keyword tag type</a> or with a <a class="reference internal" href="#tagged-default">tagged default</a>.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined n:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/binding.hpp">boost/parameter/binding.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<pre class="literal-block">
|
|
template <class A, class K, class D = void>
|
|
struct binding
|
|
{
|
|
typedef … type;
|
|
};
|
|
</pre>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal">A</tt> is a model of <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</td>
|
|
</tr>
|
|
<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the reference type of the <a class="reference internal" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal">A</tt>
|
|
having <a class="reference internal" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal">K</tt>, if any. If no such <a class="reference internal" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal">D</tt>.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="section" id="lazy-binding">
|
|
<h2><a class="toc-backref" href="#id46">5.2 <tt class="docutils literal">lazy_binding</tt></a></h2>
|
|
<p>Returns the result type of indexing an argument pack with a <a class="reference internal" href="#tagged-lazy-default">tagged lazy default</a>.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/binding.hpp">boost/parameter/binding.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<pre class="literal-block">
|
|
template <class A, class K, class F>
|
|
struct lazy_binding
|
|
{
|
|
typedef … type;
|
|
};
|
|
</pre>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal">A</tt> is a model of <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</td>
|
|
</tr>
|
|
<tr class="field"><th class="field-name">Returns:</th><td class="field-body">the reference type of the <a class="reference internal" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal">A</tt>
|
|
having <a class="reference internal" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal">K</tt>, if any. If no such <a class="reference internal" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal">boost::</tt><a class="reference external" href="../../../utility/utility.htm#result_of"><tt class="docutils literal">result_of</tt></a><tt class="docutils literal"><span class="pre"><F()>::type</span></tt>.<a class="footnote-reference" href="#no-result-of" id="id18"><sup>2</sup></a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="section" id="value-type">
|
|
<h2><a class="toc-backref" href="#id47">5.3 <tt class="docutils literal">value_type</tt></a></h2>
|
|
<p>Returns the result type of indexing an argument pack with a
|
|
<a class="reference internal" href="#keyword-tag-type">keyword tag type</a> or with a <a class="reference internal" href="#tagged-default">tagged default</a>.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined n:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/value_type.hpp">boost/parameter/value_type.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<pre class="literal-block">
|
|
template <class A, class K, class D = void>
|
|
struct value_type
|
|
{
|
|
typedef … type;
|
|
};
|
|
</pre>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><p class="first"><tt class="docutils literal">A</tt> is a model of <a class="reference internal" href="#argumentpack"><span class="concept">ArgumentPack</span></a>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">the type of the <a class="reference internal" href="#tagged-reference">tagged reference</a> in <tt class="docutils literal">A</tt>
|
|
having <a class="reference internal" href="#keyword-tag-type">keyword tag type</a> <tt class="docutils literal">K</tt>, if any. If no such <a class="reference internal" href="#tagged-reference">tagged reference</a> exists, returns <tt class="docutils literal">D</tt>. Equivalent to:</p>
|
|
<pre class="literal-block">
|
|
typename remove_reference<
|
|
typename binding<A, K, D>::type
|
|
>::type
|
|
</pre>
|
|
<p class="last">… when <tt class="docutils literal">D</tt> is not a reference type.</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<hr class="docutils" />
|
|
<div class="section" id="code-generation-macros">
|
|
<h1><a class="toc-backref" href="#id48">6 Code Generation Macros</a></h1>
|
|
<p>Macros in this section can be used to ease the writing of code
|
|
using the Parameter libray by eliminating repetitive boilerplate.</p>
|
|
<div class="section" id="boost-parameter-function-result-name-tag-namespace-arguments">
|
|
<h2><a class="toc-backref" href="#id49">6.1 <tt class="docutils literal">BOOST_PARAMETER_FUNCTION(result,name,tag_namespace,arguments)</tt></a></h2>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/preprocessor.hpp">boost/parameter/preprocessor.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><p class="first"><tt class="docutils literal">result</tt> is the parenthesized return type of the function.
|
|
<tt class="docutils literal">name</tt> is the base name of the function, this is the name of the
|
|
generated forwarding functions. <tt class="docutils literal">tag_namespace</tt> is the namespace in
|
|
which the keywords used by the function resides. <tt class="docutils literal">arguments</tt> is
|
|
a list of <em>argument specifiers</em>, as defined below.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="field"><th class="field-name" colspan="2">Argument specifiers syntax:</th></tr>
|
|
<tr><td> </td><td class="field-body"><pre class="first literal-block">
|
|
argument-specifiers ::= <em>specifier-group</em> {<em>specifier-group</em>}
|
|
|
|
specifier-group0 ::= <em>specifier-group1</em> |
|
|
( '<strong>(</strong>' '<strong>deduced</strong>' <em>specifier-group1</em> {<em>specifier-group1</em>} '<strong>)</strong>' )
|
|
|
|
specifier-group1 ::= ( '<strong>(</strong>' '<strong>optional</strong>' <em>optional-specifier</em> {<em>optional-specifier</em>} '<strong>)</strong>' ) |
|
|
( '<strong>(</strong>' '<strong>required</strong>' <em>required-specifier</em> {<em>required-specifier</em>} '<strong>)</strong>' )
|
|
|
|
optional-specifier ::= '<strong>(</strong>' <em>name</em> '<strong>,</strong>' <em>restriction</em> '<strong>,</strong>' <em>default-value</em> ')'
|
|
required-specifier ::= '<strong>(</strong>' <em>name</em> '<strong>,</strong>' <em>restriction</em> ')'
|
|
|
|
restriction ::= ('<strong>*</strong>' '<strong>(</strong>' <em>lambda-expression</em> '<strong>)</strong>' ) |
|
|
( '<strong>(</strong>' <em>typename</em> '<strong>)</strong>' ) |
|
|
'<strong>*</strong>'
|
|
</pre>
|
|
<p class="last"><tt class="docutils literal">name</tt> is any valid C++ identifier. <tt class="docutils literal"><span class="pre">default-value</span></tt> is any valid
|
|
C++ expression. <tt class="docutils literal">typename</tt> is the name of a type.
|
|
<tt class="docutils literal"><span class="pre">lambda-expression</span></tt> is an <a class="reference external" href="../../../mpl/doc/refmanual/lambda-expression.html">MPL lambda expression</a>.</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name" colspan="2">Generated names in enclosing scope:</th></tr>
|
|
<tr><td> </td><td class="field-body"><ul class="first last simple">
|
|
<li><tt class="docutils literal">boost_param_result_ ## __LINE__ ## name</tt></li>
|
|
<li><tt class="docutils literal">boost_param_params_ ## __LINE__ ## name</tt></li>
|
|
<li><tt class="docutils literal">boost_param_parameters_ ## __LINE__ ## name</tt></li>
|
|
<li><tt class="docutils literal">boost_param_impl ## name</tt></li>
|
|
<li><tt class="docutils literal">boost_param_default_ ## __LINE__ ## name</tt></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<dl class="docutils">
|
|
<dt>Approximate expansion:</dt>
|
|
<dd><p class="first"><strong>Where</strong>:</p>
|
|
<ul class="simple">
|
|
<li><tt class="docutils literal">n</tt> denotes the <em>minimum</em> arity, as determined from <tt class="docutils literal">arguments</tt>.</li>
|
|
<li><tt class="docutils literal">m</tt> denotes the <em>maximum</em> arity, as determined from <tt class="docutils literal">arguments</tt>.</li>
|
|
</ul>
|
|
<pre class="last literal-block">
|
|
template <class T>
|
|
struct boost_param_result_ ## __LINE__ ## <strong>name</strong>
|
|
{
|
|
typedef <strong>result</strong> type;
|
|
};
|
|
|
|
struct boost_param_params_ ## __LINE__ ## <strong>name</strong>
|
|
: boost::parameter::parameters<
|
|
<em>list of parameter specifications, based on arguments</em>
|
|
>
|
|
{};
|
|
|
|
typedef boost_param_params_ ## __LINE__ ## <strong>name</strong>
|
|
boost_param_parameters_ ## __LINE__ ## <strong>name</strong>;
|
|
|
|
template <class A0, …, class A<strong>n</strong>>
|
|
<em>result type</em> <strong>name</strong>(
|
|
A0 <em>cv</em>& a0, …, A<strong>n</strong> <em>cv</em>& a<strong>n</strong>
|
|
, typename boost_param_parameters_ ## __LINE__ ## <strong>name</strong>::match<
|
|
A0 <em>cv</em>, …, A<strong>n</strong> <em>cv</em>
|
|
>::type = boost_param_parameters_ ## __LINE__ ## <strong>name</strong>()
|
|
)
|
|
{
|
|
<em>… forward to implementation …</em>
|
|
}
|
|
|
|
<span class="vellipsis">⋮</span>
|
|
|
|
template <class A0, …, class A<strong>m</strong>>
|
|
<em>result type</em> <strong>name</strong>(
|
|
A0 <em>cv</em>& a0, …, A<strong>m</strong> <em>cv</em>& a<strong>m</strong>
|
|
, typename boost_param_parameters_ ## __LINE__ ## <strong>name</strong>::match<
|
|
A0 <em>cv</em>, …, A<strong>m</strong> <em>cv</em>
|
|
>::type = boost_param_parameters_ ## __LINE__ ## <strong>name</strong>()
|
|
)
|
|
{
|
|
<em>… forward to implementation …</em>
|
|
}
|
|
|
|
template <
|
|
class ResultType
|
|
, class <em>argument name</em><strong>0</strong> ## _type
|
|
…
|
|
, class <em>argument name</em><strong>m</strong> ## _type
|
|
>
|
|
ResultType boost_param_default_ ## __LINE__ ## <strong>name</strong>(
|
|
(ResultType(*)())
|
|
, <em>argument name</em><strong>0</strong> ## _type& <em>argument name</em><strong>0</strong>
|
|
…
|
|
, <em>argument name</em><strong>m</strong> ## _type& <em>argument name</em><strong>m</strong>
|
|
)
|
|
</pre>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="boost-parameter-member-function-result-name-tag-namespace-arguments">
|
|
<h2><a class="toc-backref" href="#id50">6.2 <tt class="docutils literal">BOOST_PARAMETER_MEMBER_FUNCTION(result,name,tag_namespace,arguments)</tt></a></h2>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/preprocessor.hpp">boost/parameter/preprocessor.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>See <tt class="docutils literal">BOOST_PARAMETER_FUNCTION(result,name,tag_namespace,arguments)</tt></p>
|
|
</div>
|
|
<div class="section" id="boost-parameter-constructor-cls-impl-tag-namespace-arguments">
|
|
<h2><a class="toc-backref" href="#id51">6.3 <tt class="docutils literal">BOOST_PARAMETER_CONSTRUCTOR(cls, impl, tag_namespace, arguments)</tt></a></h2>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/preprocessor.hpp">boost/parameter/preprocessor.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><p class="first"><tt class="docutils literal">cls</tt> is the name of this class. <tt class="docutils literal">impl</tt> is the
|
|
parenthesized implementation base class for <tt class="docutils literal">cls</tt>.
|
|
<tt class="docutils literal">tag_namespace</tt> is the namespace in which the keywords
|
|
used by the function resides. <tt class="docutils literal">arguments</tt> is
|
|
a list of <em>argument specifiers</em>, as defined in
|
|
<tt class="docutils literal">BOOST_PARAMETER_FUNCTION(result,name,tag_namespace,arguments)</tt>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="field"><th class="field-name" colspan="2">Generated names in enclosing scope:</th></tr>
|
|
<tr><td> </td><td class="field-body"><ul class="first last simple">
|
|
<li><tt class="docutils literal">boost_param_params_ ## __LINE__ ## ctor</tt></li>
|
|
<li><tt class="docutils literal">constructor_parameters ## __LINE__</tt></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<dl class="docutils">
|
|
<dt>Approximate expansion:</dt>
|
|
<dd><p class="first"><strong>Where</strong>:</p>
|
|
<ul class="simple">
|
|
<li><tt class="docutils literal">n</tt> denotes the <em>minimum</em> arity, as determined from <tt class="docutils literal">arguments</tt>.</li>
|
|
<li><tt class="docutils literal">m</tt> denotes the <em>maximum</em> arity, as determined from <tt class="docutils literal">arguments</tt>.</li>
|
|
</ul>
|
|
<pre class="last literal-block">
|
|
struct boost_param_params_ ## __LINE__ ## ctor
|
|
: boost::parameter::parameters<
|
|
<em>list of parameter specifications, based on arguments</em>
|
|
>
|
|
{};
|
|
|
|
typedef boost_param_params_ ## __LINE__ ## <strong>name</strong>
|
|
constructor_parameters ## __LINE__;
|
|
|
|
template <class A0, …, class A<strong>n</strong>>
|
|
<em>cls</em>(A0 const& a0, …, A<strong>n</strong> const& a<strong>n</strong>)
|
|
: <em>impl</em>(constructor_parameters ## __LINE__(a0, …, a<strong>n</strong>))
|
|
{}
|
|
|
|
<span class="vellipsis">⋮</span>
|
|
|
|
template <class A0, …, class A<strong>m</strong>>
|
|
<em>cls</em>(A0 const& a0, …, A<strong>n</strong> const& a<strong>m</strong>)
|
|
: <em>impl</em>(constructor_parameters ## __LINE__(a0, …, a<strong>m</strong>))
|
|
{}
|
|
</pre>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="boost-parameter-name-name">
|
|
<h2><a class="toc-backref" href="#id52">6.4 <tt class="docutils literal">BOOST_PARAMETER_NAME(name)</tt></a></h2>
|
|
<p>Declares a tag-type and keyword object.</p>
|
|
<p>Expands to:</p>
|
|
<p><strong>If</strong> <em>name</em> is of the form:</p>
|
|
<pre class="literal-block">
|
|
(<em>tag-name</em>, <em>namespace-name</em>) <em>object-name</em>
|
|
</pre>
|
|
<p><strong>then</strong></p>
|
|
<pre class="literal-block">
|
|
namespace <em>namespace-name</em>
|
|
{
|
|
struct <em>tag-name</em>
|
|
{
|
|
static char const* keyword_name()
|
|
{
|
|
return ##<em>tag-name</em>;
|
|
}
|
|
|
|
typedef <em>unspecified</em> _;
|
|
typedef <em>unspecified</em> _1;
|
|
};
|
|
}
|
|
|
|
::boost::parameter::keyword<<em>tag-namespace</em>::<em>tag-name</em>> const& <em>object-name</em>
|
|
= ::boost::parameter::keyword<<em>tag-namespace</em>::<em>tag-name</em>>::instance;
|
|
</pre>
|
|
<p><strong>Else</strong></p>
|
|
<pre class="literal-block">
|
|
namespace tag
|
|
{
|
|
struct <em>name</em>
|
|
{
|
|
static char const* keyword_name()
|
|
{
|
|
return ##<em>name</em>;
|
|
}
|
|
|
|
typedef <em>unspecified</em> _;
|
|
typedef <em>unspecified</em> _1;
|
|
};
|
|
}
|
|
|
|
::boost::parameter::keyword<tag::<em>name</em>> const& _<em>name</em>
|
|
= ::boost::parameter::keyword<tag::<em>name</em>>::instance;
|
|
</pre>
|
|
</div>
|
|
<div class="section" id="boost-parameter-template-keyword-name">
|
|
<h2><a class="toc-backref" href="#id53">6.5 <tt class="docutils literal">BOOST_PARAMETER_TEMPLATE_KEYWORD(name)</tt></a></h2>
|
|
<p>Expands to:</p>
|
|
<pre class="literal-block">
|
|
namespace tag
|
|
{
|
|
struct <em>name</em>;
|
|
}
|
|
|
|
template <class T>
|
|
struct <em>name</em>
|
|
: ::boost::parameter::template_keyword<tag::<em>name</em>, T>
|
|
{};
|
|
</pre>
|
|
</div>
|
|
<div class="section" id="boost-parameter-fun-r-n-l-h-p">
|
|
<h2><a class="toc-backref" href="#id54">6.6 <tt class="docutils literal">BOOST_PARAMETER_FUN(r,n,l,h,p)</tt></a></h2>
|
|
<div class="admonition-deprecated admonition">
|
|
<p class="first admonition-title">Deprecated</p>
|
|
<p class="last">This macro has been deprecated in favor of
|
|
<tt class="docutils literal">BOOST_PARAMETER_FUNCTION</tt>.</p>
|
|
</div>
|
|
<p>Generates a sequence of <a class="reference external" href="index.html#forwarding-functions">forwarding function</a> templates named
|
|
<tt class="docutils literal">n</tt>, with arities ranging from <tt class="docutils literal">l</tt> to <tt class="docutils literal">h</tt> , returning <tt class="docutils literal">r</tt>,
|
|
and using <tt class="docutils literal">p</tt> to control overload resolution and assign tags to
|
|
positional arguments.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/macros.hpp">boost/parameter/macros.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><tt class="docutils literal">l</tt> and <tt class="docutils literal">h</tt> are nonnegative integer tokens such
|
|
that <tt class="docutils literal">l</tt> < <tt class="docutils literal">h</tt></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<dl class="docutils">
|
|
<dt>Generates</dt>
|
|
<dd><pre class="first last literal-block">
|
|
template <class A1, class A2, …class A##<strong>l</strong>>
|
|
r name(
|
|
A1 const& a1, A2 const& a2, …A<strong>l</strong> const& x<strong>l</strong>
|
|
, typename <strong>p</strong>::match<A1,A2,…A<strong>l</strong>>::type p = <strong>p</strong>())
|
|
{
|
|
return <strong>name</strong>_with_named_params(<strong>p</strong>(x1,x2,…x<strong>l</strong>));
|
|
}
|
|
|
|
template <class A1, class A2, …class A<strong>l</strong>, class A##<a class="reference external" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)>
|
|
r name(
|
|
A1 const& a1, A2 const& a2, …A<strong>l</strong> const& x<strong>l</strong>
|
|
, A##<a class="reference external" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>) const& x##<a class="reference external" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)
|
|
, typename <strong>p</strong>::match<A1,A2,…A<strong>l</strong>,A##<a class="reference external" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)>::type p = <strong>p</strong>())
|
|
{
|
|
return <strong>name</strong>_with_named_params(<strong>p</strong>(x1,x2,…x<strong>l</strong>,x##<a class="reference external" href="../../../preprocessor/doc/ref/inc.html">BOOST_PP_INC</a>(<strong>l</strong>)));
|
|
}
|
|
|
|
<span class="vellipsis">⋮</span>
|
|
|
|
template <class A1, class A2, …class A<strong>h</strong>>
|
|
r name(
|
|
A1 const& a1, A2 const& a2, …A<strong>h</strong> const& x<strong>h</strong>
|
|
, typename <strong>p</strong>::match<A1,A2,…A<strong>h</strong>>::type p = <strong>p</strong>())
|
|
{
|
|
return <strong>name</strong>_with_named_params(<strong>p</strong>(a1,a2,…a<strong>h</strong>));
|
|
}
|
|
</pre>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="boost-parameter-keyword-n-k">
|
|
<h2><a class="toc-backref" href="#id55">6.7 <tt class="docutils literal">BOOST_PARAMETER_KEYWORD(n,k)</tt></a></h2>
|
|
<div class="admonition-deprecated admonition">
|
|
<p class="first admonition-title">Deprecated</p>
|
|
<p class="last">This macro has been deprecated in favor of
|
|
<tt class="docutils literal">BOOST_PARAMETER_NAME</tt>.</p>
|
|
</div>
|
|
<p>Generates the declaration of a <a class="reference internal" href="#keyword-tag-type">keyword tag type</a> named <tt class="docutils literal">k</tt> in
|
|
namespace <tt class="docutils literal">n</tt>, and a corresponding <a class="reference internal" href="#keyword-object">keyword object</a> definition in
|
|
the enclosing namespace.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/keyword.hpp">boost/parameter/keyword.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<dl class="docutils">
|
|
<dt>Generates</dt>
|
|
<dd><pre class="first last literal-block">
|
|
namespace <strong>n</strong> { struct <strong>k</strong>; }
|
|
namespace {
|
|
boost::parameter::keyword<<em>tag-namespace</em>::<strong>k</strong>>& <strong>k</strong>
|
|
= boost::parameter::keyword<<em>tag-namespace</em>::<strong>k</strong>>::get();
|
|
}
|
|
</pre>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="boost-parameter-match-p-a-x">
|
|
<h2><a class="toc-backref" href="#id56">6.8 <tt class="docutils literal">BOOST_PARAMETER_MATCH(p,a,x)</tt></a></h2>
|
|
<p>Generates a defaulted parameter declaration for a <a class="reference external" href="index.html#forwarding-functions">forwarding
|
|
function</a>.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/match.hpp">boost/parameter/match.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Requires:</th><td class="field-body"><p class="first"><tt class="docutils literal">a</tt> is a <a class="reference external" href="http://www.boost.org/libs/preprocessor/doc/data.html">Boost.Preprocessor sequence</a>
|
|
of the form</p>
|
|
<pre class="last literal-block">
|
|
(A0)(A1)…(A<em>n</em>)
|
|
</pre>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<dl class="docutils">
|
|
<dt>Generates</dt>
|
|
<dd><pre class="first last literal-block">
|
|
typename <strong>p</strong>::match<<strong>A0</strong>,<strong>A1</strong>…,<strong>A</strong><em>n</em>>::type <strong>x</strong> = <strong>p</strong>()
|
|
</pre>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="configuration-macros">
|
|
<h1><a class="toc-backref" href="#id57">7 Configuration Macros</a></h1>
|
|
<div class="section" id="boost-parameter-max-arity">
|
|
<h2><a class="toc-backref" href="#id58">7.1 <tt class="docutils literal">BOOST_PARAMETER_MAX_ARITY</tt></a></h2>
|
|
<p>Determines the maximum number of arguments supported by the
|
|
library. Will only be <tt class="docutils literal">#defined</tt> by the library if it is not
|
|
already <tt class="docutils literal">#defined</tt>.</p>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Defined in:</th><td class="field-body"><a class="reference external" href="../../../../boost/parameter/config.hpp">boost/parameter/config.hpp</a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="docutils field-list" frame="void" rules="none">
|
|
<col class="field-name" />
|
|
<col class="field-body" />
|
|
<tbody valign="top">
|
|
<tr class="field"><th class="field-name">Default Value:</th><td class="field-body"><tt class="docutils literal">8</tt></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="tutorial">
|
|
<h1><a class="toc-backref" href="#id59">8 Tutorial</a></h1>
|
|
<p>Follow <a class="reference external" href="index.html#tutorial">this link</a> to the Boost.Parameter tutorial
|
|
documentation.</p>
|
|
<hr class="docutils" />
|
|
<table class="docutils footnote" frame="void" id="thread" rules="none">
|
|
<colgroup><col class="label" /><col /></colgroup>
|
|
<tbody valign="top">
|
|
<tr><td class="label"><a class="fn-backref" href="#id2">[1]</a></td><td>References to tag objects may be initialized multiple
|
|
times. This scenario can only occur in the presence of
|
|
threading. Because the C++ standard doesn't consider threading,
|
|
it doesn't explicitly allow or forbid multiple initialization of
|
|
references. That said, it's hard to imagine an implementation
|
|
where it could make a difference.</td></tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="docutils footnote" frame="void" id="no-result-of" rules="none">
|
|
<colgroup><col class="label" /><col /></colgroup>
|
|
<tbody valign="top">
|
|
<tr><td class="label">[2]</td><td><em>(<a class="fn-backref" href="#id11">1</a>, <a class="fn-backref" href="#id18">2</a>)</em> Where <a class="reference external" href="../../../utility/utility.htm#BOOST_NO_RESULT_OF"><tt class="docutils literal">BOOST_NO_RESULT_OF</tt></a> is <tt class="docutils literal">#defined</tt>,
|
|
<tt class="docutils literal">boost::</tt><a class="reference external" href="../../../utility/utility.htm#result_of"><tt class="docutils literal">result_of</tt></a><tt class="docutils literal"><span class="pre"><F()>::type</span></tt> is replaced by
|
|
<tt class="docutils literal"><span class="pre">F::result_type</span></tt>.</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="footer">
|
|
<hr class="footer" />
|
|
Generated on: 2011-11-08 21:40 UTC.
|
|
Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|