1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>make_map</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="../metafunctions.html" title="MetaFunctions"> 9<link rel="prev" href="make_set.html" title="make_set"> 10<link rel="next" href="list_tie.html" title="list_tie"> 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="make_set.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../metafunctions.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="list_tie.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h5 class="title"> 27<a name="fusion.container.generation.metafunctions.make_map"></a><a class="link" href="make_map.html" title="make_map">make_map</a> 28</h5></div></div></div> 29<h6> 30<a name="fusion.container.generation.metafunctions.make_map.h0"></a> 31 <span class="phrase"><a name="fusion.container.generation.metafunctions.make_map.description"></a></span><a class="link" href="make_map.html#fusion.container.generation.metafunctions.make_map.description">Description</a> 32 </h6> 33<p> 34 Returns the result type of <a class="link" href="../functions/make_map.html" title="make_map"><code class="computeroutput"><span class="identifier">make_map</span></code></a>. 35 </p> 36<p> 37 The implementation depends on the support of variadic templates. 38 </p> 39<p> 40 When variadic templates are not supported, make_map is a metafunction 41 of the form: 42 </p> 43<h6> 44<a name="fusion.container.generation.metafunctions.make_map.h1"></a> 45 <span class="phrase"><a name="fusion.container.generation.metafunctions.make_map.synopsis"></a></span><a class="link" href="make_map.html#fusion.container.generation.metafunctions.make_map.synopsis">Synopsis</a> 46 </h6> 47<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span> 48 <span class="keyword">typename</span> <span class="identifier">K0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">K1</span><span class="special">,...</span> <span class="keyword">typename</span> <span class="identifier">KN</span> 49 <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="keyword">typename</span> <span class="identifier">TN</span><span class="special">></span> 50<span class="keyword">struct</span> <span class="identifier">make_map</span><span class="special">;</span> 51</pre> 52<p> 53 For C++11 compilers, the variadic function interface has no upper bound. 54 </p> 55<p> 56 For C++03 compilers, the variadic function accepts <code class="computeroutput"><span class="number">0</span></code> 57 to <code class="computeroutput"><span class="identifier">FUSION_MAX_MAP_SIZE</span></code> 58 elements, where <code class="computeroutput"><span class="identifier">FUSION_MAX_MAP_SIZE</span></code> 59 is a user definable predefined maximum that defaults to <code class="computeroutput"><span class="number">10</span></code>. You may define the preprocessor constant 60 <code class="computeroutput"><span class="identifier">FUSION_MAX_MAP_SIZE</span></code> before 61 including any Fusion header to change the default. Example: 62 </p> 63<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">FUSION_MAX_MAP_SIZE</span> <span class="number">20</span> 64</pre> 65<p> 66 When variadic templates are supported, make_map is a metafunction class 67 of the form: 68 </p> 69<h6> 70<a name="fusion.container.generation.metafunctions.make_map.h2"></a> 71 <span class="phrase"><a name="fusion.container.generation.metafunctions.make_map.synopsis0"></a></span><a class="link" href="make_map.html#fusion.container.generation.metafunctions.make_map.synopsis0">Synopsis</a> 72 </h6> 73<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span> 74 <span class="keyword">typename</span> <span class="identifier">K0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">K1</span><span class="special">,...</span> <span class="keyword">typename</span> <span class="identifier">KN</span><span class="special">></span> 75<span class="keyword">struct</span> <span class="identifier">make_map</span> 76<span class="special">{</span> 77 <span class="keyword">struct</span> <span class="identifier">apply</span><span class="special"><</span> 78 <span class="keyword">typename</span> <span class="identifier">T0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="keyword">typename</span> <span class="identifier">TN</span><span class="special">></span> 79<span class="special">};</span> 80</pre> 81<h6> 82<a name="fusion.container.generation.metafunctions.make_map.h3"></a> 83 <span class="phrase"><a name="fusion.container.generation.metafunctions.make_map.parameters"></a></span><a class="link" href="make_map.html#fusion.container.generation.metafunctions.make_map.parameters">Parameters</a> 84 </h6> 85<div class="informaltable"><table class="table"> 86<colgroup> 87<col> 88<col> 89<col> 90</colgroup> 91<thead><tr> 92<th> 93 <p> 94 Parameter 95 </p> 96 </th> 97<th> 98 <p> 99 Requirement 100 </p> 101 </th> 102<th> 103 <p> 104 Description 105 </p> 106 </th> 107</tr></thead> 108<tbody> 109<tr> 110<td> 111 <p> 112 <code class="computeroutput"><span class="identifier">K0</span><span class="special">,</span> 113 <span class="identifier">K1</span><span class="special">,...</span> 114 <span class="identifier">KN</span></code> 115 </p> 116 </td> 117<td> 118 <p> 119 Any type 120 </p> 121 </td> 122<td> 123 <p> 124 Keys associated with <code class="computeroutput"><span class="identifier">T0</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="identifier">TN</span></code> 125 </p> 126 </td> 127</tr> 128<tr> 129<td> 130 <p> 131 <code class="computeroutput"><span class="identifier">T0</span><span class="special">,</span> 132 <span class="identifier">T1</span><span class="special">,...</span> 133 <span class="identifier">TN</span></code> 134 </p> 135 </td> 136<td> 137 <p> 138 Any type 139 </p> 140 </td> 141<td> 142 <p> 143 Data associated with keys <code class="computeroutput"><span class="identifier">K0</span><span class="special">,</span> <span class="identifier">K1</span><span class="special">,...</span> <span class="identifier">KN</span></code> 144 </p> 145 </td> 146</tr> 147</tbody> 148</table></div> 149<h6> 150<a name="fusion.container.generation.metafunctions.make_map.h4"></a> 151 <span class="phrase"><a name="fusion.container.generation.metafunctions.make_map.expression_semantics"></a></span><a class="link" href="make_map.html#fusion.container.generation.metafunctions.make_map.expression_semantics">Expression 152 Semantics</a> 153 </h6> 154<pre class="programlisting"><span class="preprocessor">#if</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FUSION_HAS_VARIADIC_MAP</span><span class="special">)</span> 155<span class="identifier">resulf_of</span><span class="special">::</span><span class="identifier">make_map</span><span class="special"><</span><span class="identifier">K0</span><span class="special">,</span> <span class="identifier">K1</span><span class="special">,...</span> <span class="identifier">KN</span><span class="special">,</span> <span class="identifier">T0</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="identifier">TN</span><span class="special">>::</span><span class="identifier">type</span><span class="special">;</span> 156<span class="preprocessor">#else</span> 157<span class="identifier">resulf_of</span><span class="special">::</span><span class="identifier">make_map</span><span class="special"><</span><span class="identifier">K0</span><span class="special">,</span> <span class="identifier">K1</span><span class="special">,...</span> <span class="identifier">KN</span><span class="special">>::</span><span class="identifier">apply</span><span class="special"><</span><span class="identifier">T0</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="identifier">TN</span><span class="special">>::</span><span class="identifier">type</span><span class="special">;</span> 158<span class="preprocessor">#endif</span> 159</pre> 160<p> 161 <span class="bold"><strong>Return type</strong></span>: <a class="link" href="make_map.html" title="make_map"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">make_map</span></code></a><code class="computeroutput"><span class="special"><</span><span class="identifier">K0</span><span class="special">,</span> <span class="identifier">K0</span><span class="special">,...</span> <span class="identifier">KN</span><span class="special">,</span> <span class="identifier">T0</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="identifier">TN</span><span class="special">>::</span><span class="identifier">type</span></code> when variadic templates are not 162 supported, or <a class="link" href="make_map.html" title="make_map"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">make_map</span></code></a><code class="computeroutput"><span class="special"><</span><span class="identifier">K0</span><span class="special">,</span> <span class="identifier">K0</span><span class="special">,...</span> <span class="identifier">KN</span><span class="special">>::</span><span class="identifier">apply</span><span class="special"><</span><span class="identifier">T0</span><span class="special">,</span> <span class="identifier">T1</span><span class="special">,...</span> <span class="identifier">TN</span><span class="special">>::</span><span class="identifier">type</span></code> when variadic templates are supported. 163 </p> 164<p> 165 <span class="bold"><strong>Semantics</strong></span>: A <a class="link" href="../../map.html" title="map"><code class="computeroutput"><span class="identifier">map</span></code></a> with <a class="link" href="../../../support/pair.html" title="pair"><code class="computeroutput"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">pair</span></code></a> elements where the <code class="computeroutput"><span class="identifier">second_type</span></code> is converted following 166 the rules for <a class="link" href="../../../notes.html#fusion.notes.element_conversion"><span class="emphasis"><em>element 167 conversion</em></span></a>. 168 </p> 169<p> 170 <span class="bold"><strong>Precondition</strong></span>: There may be no duplicate 171 key types. 172 </p> 173<h6> 174<a name="fusion.container.generation.metafunctions.make_map.h5"></a> 175 <span class="phrase"><a name="fusion.container.generation.metafunctions.make_map.header"></a></span><a class="link" href="make_map.html#fusion.container.generation.metafunctions.make_map.header">Header</a> 176 </h6> 177<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">container</span><span class="special">/</span><span class="identifier">generation</span><span class="special">/</span><span class="identifier">make_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 178<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">make_map</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 179</pre> 180<h6> 181<a name="fusion.container.generation.metafunctions.make_map.h6"></a> 182 <span class="phrase"><a name="fusion.container.generation.metafunctions.make_map.example"></a></span><a class="link" href="make_map.html#fusion.container.generation.metafunctions.make_map.example">Example</a> 183 </h6> 184<pre class="programlisting"><span class="preprocessor">#if</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FUSION_HAS_VARIADIC_MAP</span><span class="special">)</span> 185<span class="identifier">result_of</span><span class="special">::</span><span class="identifier">make_map</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">char</span><span class="special">,</span> <span class="keyword">double</span><span class="special">>::</span><span class="identifier">type</span> 186<span class="preprocessor">#else</span> 187<span class="identifier">result_of</span><span class="special">::</span><span class="identifier">make_map</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">>::</span><span class="identifier">apply</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">double</span><span class="special">>::</span><span class="identifier">type</span> 188<span class="preprocessor">#endif</span> 189</pre> 190<h6> 191<a name="fusion.container.generation.metafunctions.make_map.h7"></a> 192 <span class="phrase"><a name="fusion.container.generation.metafunctions.make_map.see_also"></a></span><a class="link" href="make_map.html#fusion.container.generation.metafunctions.make_map.see_also">See 193 also</a> 194 </h6> 195<p> 196 <a class="link" href="../../../support/pair.html" title="pair"><code class="computeroutput"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">pair</span></code></a> 197 </p> 198</div> 199<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 200<td align="left"></td> 201<td align="right"><div class="copyright-footer">Copyright © 2001-2006, 2011, 2012 Joel de Guzman, 202 Dan Marsden, Tobias Schwinger<p> 203 Distributed under the Boost Software License, Version 1.0. (See accompanying 204 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>) 205 </p> 206</div></td> 207</tr></table> 208<hr> 209<div class="spirit-nav"> 210<a accesskey="p" href="make_set.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../metafunctions.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="list_tie.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a> 211</div> 212</body> 213</html> 214