1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>pair</title> 5<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="../../index.html" title="Chapter 1. Fusion 2.2"> 8<link rel="up" href="../support.html" title="Support"> 9<link rel="prev" href="deduce_sequence.html" title="deduce_sequence"> 10<link rel="next" href="../iterator.html" title="Iterator"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td> 15<td align="center"><a href="../../../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<a accesskey="p" href="deduce_sequence.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../support.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../iterator.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h3 class="title"> 27<a name="fusion.support.pair"></a><a class="link" href="pair.html" title="pair">pair</a> 28</h3></div></div></div> 29<h5> 30<a name="fusion.support.pair.h0"></a> 31 <span class="phrase"><a name="fusion.support.pair.description"></a></span><a class="link" href="pair.html#fusion.support.pair.description">Description</a> 32 </h5> 33<p> 34 Fusion <code class="computeroutput"><span class="identifier">pair</span></code> type is a half 35 runtime pair. A half runtime pair is similar to a <a class="link" href="../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>, 36 but, unlike <a class="link" href="../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>, 37 the first type does not have data. It is used as elements in <a class="link" href="../container/map.html" title="map"><code class="computeroutput"><span class="identifier">map</span></code></a>s, for example. 38 </p> 39<h5> 40<a name="fusion.support.pair.h1"></a> 41 <span class="phrase"><a name="fusion.support.pair.synopsis"></a></span><a class="link" href="pair.html#fusion.support.pair.synopsis">Synopsis</a> 42 </h5> 43<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></span> 44<span class="keyword">struct</span> <span class="identifier">pair</span><span class="special">;</span> 45 46<span class="keyword">namespace</span> <span class="identifier">result_of</span> 47<span class="special">{</span> 48 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Pair</span><span class="special">></span> 49 <span class="keyword">struct</span> <span class="identifier">first</span><span class="special">;</span> 50 51 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Pair</span><span class="special">></span> 52 <span class="keyword">struct</span> <span class="identifier">second</span><span class="special">;</span> 53 54 <span class="keyword">template</span> <span class="special"><</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">></span> 55 <span class="keyword">struct</span> <span class="identifier">make_pair</span><span class="special">;</span> 56<span class="special">}</span> 57 58<span class="keyword">template</span> <span class="special"><</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">></span> 59<span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special"><</span><span class="identifier">First</span><span class="special">,</span><span class="identifier">Second</span><span class="special">>::</span><span class="identifier">type</span> 60<span class="identifier">make_pair</span><span class="special">(</span><span class="identifier">Second</span> <span class="keyword">const</span> <span class="special">&);</span> 61</pre> 62<h5> 63<a name="fusion.support.pair.h2"></a> 64 <span class="phrase"><a name="fusion.support.pair.template_parameters"></a></span><a class="link" href="pair.html#fusion.support.pair.template_parameters">Template 65 parameters</a> 66 </h5> 67<div class="informaltable"><table class="table"> 68<colgroup> 69<col> 70<col> 71</colgroup> 72<thead><tr> 73<th> 74 <p> 75 Parameter 76 </p> 77 </th> 78<th> 79 <p> 80 Description 81 </p> 82 </th> 83</tr></thead> 84<tbody> 85<tr> 86<td> 87 <p> 88 First 89 </p> 90 </td> 91<td> 92 <p> 93 The first type. This is purely a type. No data is held. 94 </p> 95 </td> 96</tr> 97<tr> 98<td> 99 <p> 100 Second 101 </p> 102 </td> 103<td> 104 <p> 105 The second type. This contains data. 106 </p> 107 </td> 108</tr> 109</tbody> 110</table></div> 111<div class="variablelist"> 112<p class="title"><b>Notation</b></p> 113<dl class="variablelist"> 114<dt><span class="term"><code class="computeroutput"><span class="identifier">P</span></code></span></dt> 115<dd><p> 116 Fusion pair type 117 </p></dd> 118<dt><span class="term"><code class="computeroutput"><span class="identifier">p</span></code>, <code class="computeroutput"><span class="identifier">p2</span></code></span></dt> 119<dd><p> 120 Fusion pairs 121 </p></dd> 122<dt><span class="term"><code class="computeroutput"><span class="identifier">F</span></code>, <code class="computeroutput"><span class="identifier">S</span></code></span></dt> 123<dd><p> 124 Arbitrary types 125 </p></dd> 126<dt><span class="term"><code class="computeroutput"><span class="identifier">s</span></code></span></dt> 127<dd><p> 128 Value of type <code class="computeroutput"><span class="identifier">S</span></code> 129 </p></dd> 130<dt><span class="term"><code class="computeroutput"><span class="identifier">o</span></code></span></dt> 131<dd><p> 132 Output stream 133 </p></dd> 134<dt><span class="term"><code class="computeroutput"><span class="identifier">i</span></code></span></dt> 135<dd><p> 136 Input stream 137 </p></dd> 138</dl> 139</div> 140<h5> 141<a name="fusion.support.pair.h3"></a> 142 <span class="phrase"><a name="fusion.support.pair.expression_semantics"></a></span><a class="link" href="pair.html#fusion.support.pair.expression_semantics">Expression 143 Semantics</a> 144 </h5> 145<div class="informaltable"><table class="table"> 146<colgroup> 147<col> 148<col> 149</colgroup> 150<thead><tr> 151<th> 152 <p> 153 Expression 154 </p> 155 </th> 156<th> 157 <p> 158 Semantics 159 </p> 160 </th> 161</tr></thead> 162<tbody> 163<tr> 164<td> 165 <p> 166 <code class="computeroutput"><span class="identifier">P</span><span class="special">::</span><span class="identifier">first_type</span></code> 167 </p> 168 </td> 169<td> 170 <p> 171 The type of the first template parameter, <code class="computeroutput"><span class="identifier">F</span></code>, 172 equivalent to <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">first</span><span class="special"><</span><span class="identifier">P</span><span class="special">>::</span><span class="identifier">type</span></code>. 173 </p> 174 </td> 175</tr> 176<tr> 177<td> 178 <p> 179 <code class="computeroutput"><span class="identifier">P</span><span class="special">::</span><span class="identifier">second_type</span></code> 180 </p> 181 </td> 182<td> 183 <p> 184 The type of the second template parameter, <code class="computeroutput"><span class="identifier">S</span></code>, 185 equivalent to <code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">second</span><span class="special"><</span><span class="identifier">P</span><span class="special">>::</span><span class="identifier">type</span></code>. 186 </p> 187 </td> 188</tr> 189<tr> 190<td> 191 <p> 192 <code class="computeroutput"><span class="identifier">P</span><span class="special">()</span></code> 193 </p> 194 </td> 195<td> 196 <p> 197 Default construction. 198 </p> 199 </td> 200</tr> 201<tr> 202<td> 203 <p> 204 <code class="computeroutput"><span class="identifier">P</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code> 205 </p> 206 </td> 207<td> 208 <p> 209 Construct a pair given value for the second type, <code class="computeroutput"><span class="identifier">s</span></code>. 210 </p> 211 </td> 212</tr> 213<tr> 214<td> 215 <p> 216 <code class="computeroutput"><span class="identifier">P</span><span class="special">(</span><span class="identifier">p2</span><span class="special">)</span></code> 217 </p> 218 </td> 219<td> 220 <p> 221 Copy constructs a pair from another pair, <code class="computeroutput"><span class="identifier">p2</span></code>. 222 </p> 223 </td> 224</tr> 225<tr> 226<td> 227 <p> 228 <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">second</span></code> 229 </p> 230 </td> 231<td> 232 <p> 233 Get the data from <code class="computeroutput"><span class="identifier">p1</span></code>. 234 </p> 235 </td> 236</tr> 237<tr> 238<td> 239 <p> 240 <code class="computeroutput"><span class="identifier">p</span> <span class="special">=</span> 241 <span class="identifier">p2</span></code> 242 </p> 243 </td> 244<td> 245 <p> 246 Assigns a pair, <code class="computeroutput"><span class="identifier">p1</span></code>, 247 from another pair, <code class="computeroutput"><span class="identifier">p2</span></code>. 248 </p> 249 </td> 250</tr> 251<tr> 252<td> 253 <p> 254 make_pair<F>(s) 255 </p> 256 </td> 257<td> 258 <p> 259 Make a pair given the first type, <code class="computeroutput"><span class="identifier">F</span></code>, 260 and a value for the second type, <code class="computeroutput"><span class="identifier">s</span></code>. 261 The second type assumes the type of <code class="computeroutput"><span class="identifier">s</span></code> 262 </p> 263 </td> 264</tr> 265<tr> 266<td> 267 <p> 268 <code class="computeroutput"><span class="identifier">o</span> <span class="special"><<</span> 269 <span class="identifier">p</span></code> 270 </p> 271 </td> 272<td> 273 <p> 274 Output <code class="computeroutput"><span class="identifier">p</span></code> to output 275 stream, <code class="computeroutput"><span class="identifier">o</span></code>. 276 </p> 277 </td> 278</tr> 279<tr> 280<td> 281 <p> 282 <code class="computeroutput"><span class="identifier">i</span> <span class="special">>></span> 283 <span class="identifier">p</span></code> 284 </p> 285 </td> 286<td> 287 <p> 288 Input <code class="computeroutput"><span class="identifier">p</span></code> from input 289 stream, <code class="computeroutput"><span class="identifier">i</span></code>. 290 </p> 291 </td> 292</tr> 293<tr> 294<td> 295 <p> 296 <code class="computeroutput"><span class="identifier">p</span> <span class="special">==</span> 297 <span class="identifier">p2</span></code> 298 </p> 299 </td> 300<td> 301 <p> 302 Tests two pairs for equality. 303 </p> 304 </td> 305</tr> 306<tr> 307<td> 308 <p> 309 <code class="computeroutput"><span class="identifier">p</span> <span class="special">!=</span> 310 <span class="identifier">p2</span></code> 311 </p> 312 </td> 313<td> 314 <p> 315 Tests two pairs for inequality. 316 </p> 317 </td> 318</tr> 319</tbody> 320</table></div> 321<h5> 322<a name="fusion.support.pair.h4"></a> 323 <span class="phrase"><a name="fusion.support.pair.header"></a></span><a class="link" href="pair.html#fusion.support.pair.header">Header</a> 324 </h5> 325<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</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">></span> 326<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 327</pre> 328<h5> 329<a name="fusion.support.pair.h5"></a> 330 <span class="phrase"><a name="fusion.support.pair.example"></a></span><a class="link" href="pair.html#fusion.support.pair.example">Example</a> 331 </h5> 332<pre class="programlisting"><span class="identifier">pair</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">></span> <span class="identifier">p</span><span class="special">(</span><span class="char">'X'</span><span class="special">);</span> 333<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">p</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> 334<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">make_pair</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="char">'X'</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> 335<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"><</span><span class="keyword">int</span><span class="special">>(</span><span class="char">'X'</span><span class="special">)));</span> 336</pre> 337</div> 338<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 339<td align="left"></td> 340<td align="right"><div class="copyright-footer">Copyright © 2001-2006, 2011, 2012 Joel de Guzman, 341 Dan Marsden, Tobias Schwinger<p> 342 Distributed under the Boost Software License, Version 1.0. (See accompanying 343 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) 344 </p> 345</div></td> 346</tr></table> 347<hr> 348<div class="spirit-nav"> 349<a accesskey="p" href="deduce_sequence.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../support.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../iterator.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> 350</div> 351</body> 352</html> 353