summaryrefslogtreecommitdiff
path: root/doc/html/proto/appendices.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/html/proto/appendices.html')
-rw-r--r--[-rwxr-xr-x]doc/html/proto/appendices.html42
1 files changed, 35 insertions, 7 deletions
diff --git a/doc/html/proto/appendices.html b/doc/html/proto/appendices.html
index 66cb99de85..24ff30a37c 100755..100644
--- a/doc/html/proto/appendices.html
+++ b/doc/html/proto/appendices.html
@@ -43,6 +43,24 @@
</h3></div></div></div>
<h5>
<a name="boost_proto.appendices.release_notes.h0"></a>
+ <span><a name="boost_proto.appendices.release_notes.boost_1_51"></a></span><a class="link" href="appendices.html#boost_proto.appendices.release_notes.boost_1_51">Boost
+ 1.51</a>
+ </h5>
+<p>
+ <span class="bold"><strong>Unpacking Expressions</strong></span>
+ </p>
+<p>
+ In Boost 1.51, Proto got simple unpacking patterns. When working with Proto
+ transforms, unpacking expressions are useful for unpacking the children of
+ an expression into a function call or an object constructor, while optionally
+ applying some transformations to each child in turn.
+ </p>
+<p>
+ See the <a class="link" href="users_guide.html#boost_proto.users_guide.back_end.expression_transformation.unpacking_expressions" title="Unpacking Expressions">Unpacking
+ Expressions</a> section for more information.
+ </p>
+<h5>
+<a name="boost_proto.appendices.release_notes.h1"></a>
<span><a name="boost_proto.appendices.release_notes.boost_1_44"></a></span><a class="link" href="appendices.html#boost_proto.appendices.release_notes.boost_1_44">Boost
1.44</a>
</h5>
@@ -62,13 +80,23 @@
when evaluated with an expression <code class="computeroutput"><span class="identifier">e</span></code>
now behaves like this:
</p>
-<pre class="programlisting"><span class="special">(</span><span class="identifier">G0</span><span class="special">()(</span><span class="identifier">e</span><span class="special">),</span> <span class="identifier">G1</span><span class="special">()(</span><span class="identifier">e</span><span class="special">),</span> <span class="identifier">G2</span><span class="special">()(</span><span class="identifier">e</span><span class="special">))</span>
+<pre class="programlisting"><span class="special">((</span><span class="keyword">void</span><span class="special">)</span><span class="identifier">G0</span><span class="special">()(</span><span class="identifier">e</span><span class="special">),</span> <span class="special">(</span><span class="keyword">void</span><span class="special">)</span><span class="identifier">G1</span><span class="special">()(</span><span class="identifier">e</span><span class="special">),</span> <span class="identifier">G2</span><span class="special">()(</span><span class="identifier">e</span><span class="special">))</span>
</pre>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ Why the void casts? It's to avoid argument-dependent lookup, which might
+ find an overloaded comma operator.
+ </p></td></tr>
+</table></div>
<p>
<span class="bold"><strong>Behavior Change: proto::as_expr() and proto::as_child()</strong></span>
</p>
<p>
- The functions <code class="computeroutput"><a class="link" href="../boost/proto/as_expr_id1527385.html" title="Function as_expr">proto::as_expr()</a></code> and <code class="computeroutput"><a class="link" href="../boost/proto/as_child_id1527575.html" title="Function as_child">proto::as_child()</a></code>
+ The functions <code class="computeroutput"><a class="link" href="../boost/proto/as_expr_id1550672.html" title="Function as_expr">proto::as_expr()</a></code> and <code class="computeroutput"><a class="link" href="../boost/proto/as_child_id1550862.html" title="Function as_child">proto::as_child()</a></code>
are used to guarantee that an object is a Proto expression by turning it
into one if it is not already, using an optionally specified domain. In previous
releases, when these functions were passed a Proto expression in a domain
@@ -173,8 +201,8 @@
1.44, users now have this power.
</p>
<p>
- Users defining their own domain can now specify how <code class="computeroutput"><a class="link" href="../boost/proto/as_expr_id1527385.html" title="Function as_expr">proto::as_expr()</a></code>
- and <code class="computeroutput"><a class="link" href="../boost/proto/as_child_id1527575.html" title="Function as_child">proto::as_child()</a></code> work in their domain. They
+ Users defining their own domain can now specify how <code class="computeroutput"><a class="link" href="../boost/proto/as_expr_id1550672.html" title="Function as_expr">proto::as_expr()</a></code>
+ and <code class="computeroutput"><a class="link" href="../boost/proto/as_child_id1550862.html" title="Function as_child">proto::as_child()</a></code> work in their domain. They
can do this easily by defining nested class templates named <code class="computeroutput"><span class="identifier">as_expr</span></code> and/or <code class="computeroutput"><span class="identifier">as_child</span></code>
within their domain class.
</p>
@@ -205,7 +233,7 @@
that the compiler may or may not be able to optimize away.)
</p>
<h5>
-<a name="boost_proto.appendices.release_notes.h1"></a>
+<a name="boost_proto.appendices.release_notes.h2"></a>
<span><a name="boost_proto.appendices.release_notes.boost_1_43"></a></span><a class="link" href="appendices.html#boost_proto.appendices.release_notes.boost_1_43">Boost
1.43</a>
</h5>
@@ -291,7 +319,7 @@
<dl>
<dt><span class="term">August ??, 2010</span></dt>
<dd><p>
- Boost 1.44: Proto gets sub-domains and per-domain control of <code class="computeroutput"><a class="link" href="../boost/proto/as_expr_id1527385.html" title="Function as_expr">proto::as_expr()</a></code> and <code class="computeroutput"><a class="link" href="../boost/proto/as_child_id1527575.html" title="Function as_child">proto::as_child()</a></code> to meet the needs
+ Boost 1.44: Proto gets sub-domains and per-domain control of <code class="computeroutput"><a class="link" href="../boost/proto/as_expr_id1550672.html" title="Function as_expr">proto::as_expr()</a></code> and <code class="computeroutput"><a class="link" href="../boost/proto/as_child_id1550862.html" title="Function as_child">proto::as_child()</a></code> to meet the needs
of Phoenix3.
</p></dd>
<dt><span class="term">August 11, 2008</span></dt>
@@ -637,7 +665,7 @@
alternate solutions to this tricky programming problem.
</p>
<p>
- Thanks also to the developers of <a href="http://www.codesourcery.com/pooma/download.html" target="_top">PETE</a>.
+ Thanks also to the developers of <a href="http://acts.nersc.gov/formertools/pete/index.html" target="_top">PETE</a>.
I found many good ideas there.
</p>
</div>