Files
boost_fusion/doc/html/fusion/support/pair.html
Tobias Schwinger 9df373af5f revises function object concepts and functional module documenation to reflect
boost::result_of-based result computation


[SVN r38209]
2007-07-13 19:25:34 +00:00

338 lines
16 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>pair</title>
<link rel="stylesheet" href="../../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../../index.html" title="Chapter 1. Fusion 2.0">
<link rel="up" href="../support.html" title="Support">
<link rel="prev" href="deduce_sequence.html" title="deduce_sequence">
<link rel="next" href="../iterators.html" title="Iterators">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%">
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="deduce_sequence.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../support.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../iterators.html"><img src="../../images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="fusion.support.pair"></a><a href="pair.html" title="pair">pair</a></h3></div></div></div>
<a name="fusion.support.pair.description"></a><h4>
<a name="id931964"></a>
<a href="pair.html#fusion.support.pair.description">Description</a>
</h4>
<p>
Fusion <code class="computeroutput"><span class="identifier">pair</span></code> type is a half
runtime pair. A half runtime pair is similar to a <a href="../sequences/adapted/std__pair.html" title="std::pair"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code></a>,
but, unlike <a href="../sequences/adapted/std__pair.html" title="std::pair"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code></a>,
the first type does not have data. It is used as elements in <span class="underline">_map</span>_s,
for example.
</p>
<a name="fusion.support.pair.synopsis"></a><h4>
<a name="id932056"></a>
<a href="pair.html#fusion.support.pair.synopsis">Synopsis</a>
</h4>
<pre class="programlisting">
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">First</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Second</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">pair</span><span class="special">;</span>
<span class="keyword">namespace</span> <span class="identifier">result_of</span>
<span class="special">{</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">First</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Second</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">first</span><span class="special">;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">First</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Second</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">second</span><span class="special">;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">First</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Second</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">make_pair</span><span class="special">;</span>
<span class="special">}</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">First</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Second</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">&lt;</span><span class="identifier">First</span><span class="special">,</span><span class="identifier">Second</span><span class="special">&gt;::</span><span class="identifier">type</span>
<span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">Second</span> <span class="keyword">const</span> <span class="special">&amp;);</span>
</pre>
<a name="fusion.support.pair.template_parameters"></a><h4>
<a name="id932447"></a>
<a href="pair.html#fusion.support.pair.template_parameters">Template parameters</a>
</h4>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Parameter
</p>
</th>
<th>
<p>
Description
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
First
</p>
</td>
<td>
<p>
The first type. This is purely a type. No data is held.
</p>
</td>
</tr>
<tr>
<td>
<p>
Second
</p>
</td>
<td>
<p>
The second type. This contains data.
</p>
</td>
</tr>
</tbody>
</table></div>
<div class="variablelist">
<p class="title"><b>Notation</b></p>
<dl>
<dt><span class="term"><code class="computeroutput"><span class="identifier">P</span></code></span></dt>
<dd>
Fusion pair type
</dd>
<dt><span class="term"><code class="computeroutput"><span class="identifier">p</span></code>,
<code class="computeroutput"><span class="identifier">p2</span></code></span></dt>
<dd>
Fusion pairs
</dd>
<dt><span class="term"><code class="computeroutput"><span class="identifier">F</span></code>,
<code class="computeroutput"><span class="identifier">S</span></code></span></dt>
<dd>
Arbitrary types
</dd>
<dt><span class="term"><code class="computeroutput"><span class="identifier">s</span></code></span></dt>
<dd>
Value of type <code class="computeroutput"><span class="identifier">S</span></code>
</dd>
<dt><span class="term"><code class="computeroutput"><span class="identifier">o</span></code></span></dt>
<dd>
Output stream
</dd>
<dt><span class="term"><code class="computeroutput"><span class="identifier">i</span></code></span></dt>
<dd>
Input stream
</dd>
</dl>
</div>
<a name="fusion.support.pair.expression_semantics"></a><h4>
<a name="id932676"></a>
<a href="pair.html#fusion.support.pair.expression_semantics">Expression Semantics</a>
</h4>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Semantics
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">P</span><span class="special">::</span><span class="identifier">first_type</span></code>
</p>
</td>
<td>
<p>
The type of the first template parameter, <code class="computeroutput"><span class="identifier">F</span></code>,
equivalent to <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">first</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">P</span><span class="special">::</span><span class="identifier">second_type</span></code>
</p>
</td>
<td>
<p>
The type of the second template parameter, <code class="computeroutput"><span class="identifier">S</span></code>,
equivalent to <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">second</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">P</span><span class="special">()</span></code>
</p>
</td>
<td>
<p>
Default construction.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">P</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
</p>
</td>
<td>
<p>
Construct a pair given value for the second type, <code class="computeroutput"><span class="identifier">s</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">P</span><span class="special">(</span><span class="identifier">p2</span><span class="special">)</span></code>
</p>
</td>
<td>
<p>
Copy constructs a pair from another pair, <code class="computeroutput"><span class="identifier">p2</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">p</span> <span class="special">=</span>
<span class="identifier">p2</span></code>
</p>
</td>
<td>
<p>
Assigns a pair, p1, from another pair, <code class="computeroutput"><span class="identifier">p2</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
make_pair&lt;F&gt;(s)
</p>
</td>
<td>
<p>
Make a pair given the first type, <code class="computeroutput"><span class="identifier">F</span></code>,
and a value for the second type, <code class="computeroutput"><span class="identifier">s</span></code>.
The second type assumes the type of <code class="computeroutput"><span class="identifier">s</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">o</span> <span class="special">&lt;&lt;</span>
<span class="identifier">p</span></code>
</p>
</td>
<td>
<p>
Output <code class="computeroutput"><span class="identifier">p</span></code> to output
stream, <code class="computeroutput"><span class="identifier">o</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">i</span> <span class="special">&gt;&gt;</span>
<span class="identifier">p</span></code>
</p>
</td>
<td>
<p>
Input <code class="computeroutput"><span class="identifier">p</span></code> from input
stream, <code class="computeroutput"><span class="identifier">i</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">p</span> <span class="special">==</span>
<span class="identifier">p2</span></code>
</p>
</td>
<td>
<p>
Tests two pairs for equality.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">p</span> <span class="special">!=</span>
<span class="identifier">p2</span></code>
</p>
</td>
<td>
<p>
Tests two pairs for inequality.
</p>
</td>
</tr>
</tbody>
</table></div>
<a name="fusion.support.pair.header"></a><h4>
<a name="id933307"></a>
<a href="pair.html#fusion.support.pair.header">Header</a>
</h4>
<pre class="programlisting">
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
</pre>
<a name="fusion.support.pair.example"></a><h4>
<a name="id933389"></a>
<a href="pair.html#fusion.support.pair.example">Example</a>
</h4>
<pre class="programlisting">
<span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">&gt;</span> <span class="identifier">p</span><span class="special">(</span><span class="char">'X'</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">p</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">make_pair</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="char">'X'</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="identifier">assert</span><span class="special">((</span><span class="identifier">p</span> <span class="special">==</span> <span class="identifier">make_pair</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="char">'X'</span><span class="special">)));</span>
</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias
Schwinger</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="deduce_sequence.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../support.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../iterators.html"><img src="../../images/next.png" alt="Next"></a>
</div>
</body>
</html>