Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / hana / doc / html / structboost_1_1hana_1_1integral__constant.html
1 <!--
2 Copyright Louis Dionne 2013-2017
3 Distributed under the Boost Software License, Version 1.0.
4 (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
5 -->
6 <!-- boost-no-inspect -->
7 <!-- HTML header for doxygen 1.8.9.1-->
8 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
9 <html xmlns="http://www.w3.org/1999/xhtml">
10 <head>
11 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
12 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
13 <meta name="generator" content="Doxygen 1.8.11"/>
14 <title>Boost.Hana: boost::hana::integral_constant&lt; T, v &gt; Struct Template Reference</title>
15 <link href="tabs.css" rel="stylesheet" type="text/css"/>
16 <script type="text/javascript" src="jquery.js"></script>
17 <script type="text/javascript" src="dynsections.js"></script>
18 <link href="navtree.css" rel="stylesheet" type="text/css"/>
19 <script type="text/javascript" src="resize.js"></script>
20 <script type="text/javascript" src="navtreedata.js"></script>
21 <script type="text/javascript" src="navtree.js"></script>
22 <script type="text/javascript">
23   $(document).ready(initResizable);
24   $(window).load(resizeHeight);
25 </script>
26 <link href="search/search.css" rel="stylesheet" type="text/css"/>
27 <script type="text/javascript" src="search/searchdata.js"></script>
28 <script type="text/javascript" src="search/search.js"></script>
29 <script type="text/javascript">
30   $(document).ready(function() { init_search(); });
31 </script>
32 <script type="text/x-mathjax-config">
33   MathJax.Hub.Config({
34     extensions: ["tex2jax.js"],
35     jax: ["input/TeX","output/HTML-CSS"],
36 });
37 // Copyright Louis Dionne 2013-2017
38 // Distributed under the Boost Software License, Version 1.0.
39 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
40 MathJax.Hub.Config({
41     "HTML-CSS": {
42         linebreaks: {
43             automatic: true,
44             width: "75% container"
45         }
46     }
47 });
48 </script><script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
49 <link href="doxygen.css" rel="stylesheet" type="text/css" />
50 <!-- Additional javascript for drawing charts. -->
51 <script type="text/javascript" src="highcharts.js"></script>
52 <script type="text/javascript" src="highcharts-data.js"></script>
53 <script type="text/javascript" src="highcharts-exporting.js"></script>
54 <script type="text/javascript" src="chart.js"></script>
55 <script type="text/javascript" src="hana.js"></script>
56 </head>
57 <body>
58 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
59 <div id="titlearea">
60 <table cellspacing="0" cellpadding="0">
61  <tbody>
62  <tr style="height: 56px;">
63   <td id="projectlogo"><img alt="Logo" src="Boost.png"/></td>
64   <td style="padding-left: 0.5em;">
65    <div id="projectname">Boost.Hana
66    &#160;<span id="projectnumber">1.1.0</span>
67    </div>
68    <div id="projectbrief">Your standard library for metaprogramming</div>
69   </td>
70    <td>        <div id="MSearchBox" class="MSearchBoxInactive">
71         <span class="left">
72           <img id="MSearchSelect" src="search/mag_sel.png"
73                onmouseover="return searchBox.OnSearchSelectShow()"
74                onmouseout="return searchBox.OnSearchSelectHide()"
75                alt=""/>
76           <input type="text" id="MSearchField" value="Search" accesskey="S"
77                onfocus="searchBox.OnSearchFieldFocus(true)" 
78                onblur="searchBox.OnSearchFieldFocus(false)" 
79                onkeyup="searchBox.OnSearchFieldChange(event)"/>
80           </span><span class="right">
81             <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
82           </span>
83         </div>
84 </td>
85  </tr>
86  </tbody>
87 </table>
88 </div>
89 <!-- end header part -->
90 <!-- Generated by Doxygen 1.8.11 -->
91 <script type="text/javascript">
92 var searchBox = new SearchBox("searchBox", "search",false,'Search');
93 </script>
94 </div><!-- top -->
95 <div id="side-nav" class="ui-resizable side-nav-resizable">
96   <div id="nav-tree">
97     <div id="nav-tree-contents">
98       <div id="nav-sync" class="sync"></div>
99     </div>
100   </div>
101   <div id="splitbar" style="-moz-user-select:none;" 
102        class="ui-resizable-handle">
103   </div>
104 </div>
105 <script type="text/javascript">
106 $(document).ready(function(){initNavTree('structboost_1_1hana_1_1integral__constant.html','');});
107 </script>
108 <div id="doc-content">
109 <!-- window showing the filter options -->
110 <div id="MSearchSelectWindow"
111      onmouseover="return searchBox.OnSearchSelectShow()"
112      onmouseout="return searchBox.OnSearchSelectHide()"
113      onkeydown="return searchBox.OnSearchSelectKey(event)">
114 </div>
115
116 <!-- iframe showing the search results (closed by default) -->
117 <div id="MSearchResultsWindow">
118 <iframe src="javascript:void(0)" frameborder="0" 
119         name="MSearchResults" id="MSearchResults">
120 </iframe>
121 </div>
122
123 <div class="header">
124   <div class="summary">
125 <a href="#related">Synopsis of associated functions</a> &#124;
126 <a href="#friends">Friends</a> &#124;
127 <a href="#pub-static-methods">Static Public Member Functions</a> &#124;
128 <a href="structboost_1_1hana_1_1integral__constant-members.html">List of all members</a>  </div>
129   <div class="headertitle">
130 <div class="title">boost::hana::integral_constant&lt; T, v &gt; Struct Template Reference<div class="ingroups"><a class="el" href="group__group-datatypes.html">Data types</a></div></div>  </div>
131 </div><!--header-->
132 <div class="contents">
133 <a name="details" id="details"></a><h2 class="groupheader">Description</h2>
134 <div class="textblock"><h3>template&lt;typename T, T v&gt;<br />
135 struct boost::hana::integral_constant&lt; T, v &gt;</h3>
136
137 <p>Compile-time value of an integral type. </p>
138 <p>An <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code> is an object that represents a compile-time integral value. As the name suggests, <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">hana::integral_constant</a></code> is basically equivalent to <code><a class="el" href="structstd_1_1integral__constant.html" title="Adapter for std::integral_constants. ">std::integral_constant</a></code>, except that <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">hana::integral_constant</a></code> also provide other goodies to make them easier to use, like arithmetic operators and similar features. In particular, <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">hana::integral_constant</a></code> is guaranteed to inherit from the corresponding <code><a class="el" href="structstd_1_1integral__constant.html" title="Adapter for std::integral_constants. ">std::integral_constant</a></code>, and hence have the same members and capabilities. The sections below explain the extensions to <code><a class="el" href="structstd_1_1integral__constant.html" title="Adapter for std::integral_constants. ">std::integral_constant</a></code> provided by <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">hana::integral_constant</a></code>.</p>
139 <h2>Arithmetic operators </h2>
140 <p><code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">hana::integral_constant</a></code> provides arithmetic operators that return <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">hana::integral_constant</a></code>s to ease writing compile-time arithmetic: </p><div class="fragment"><div class="line"><a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(hana::int_c&lt;1&gt; + hana::int_c&lt;3&gt; == hana::int_c&lt;4&gt;);</div><div class="line"></div><div class="line"><span class="comment">// Mixed-type operations are supported, but only when it involves a</span></div><div class="line"><span class="comment">// promotion, and not a conversion that could be lossy.</span></div><div class="line"><a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(hana::size_c&lt;3&gt; * hana::ushort_c&lt;5&gt; == hana::size_c&lt;15&gt;);</div><div class="line"><a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(hana::llong_c&lt;15&gt; == hana::int_c&lt;15&gt;);</div></div><!-- fragment --><p> It is pretty important to realize that these operators return other <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code>s, not normal values of an integral type. Actually, all those operators work pretty much in the same way. Simply put, for an operator <code>@</code>, </p><div class="fragment"><div class="line">integral_constant&lt;T, x&gt;{} @ integral_constant&lt;T, y&gt;{} == integral_constant&lt;T, x @ y&gt;{}</div></div><!-- fragment --><p>The fact that the operators return <code>Constant</code>s is very important because it allows all the information that's known at compile-time to be conserved as long as it's only used with other values known at compile-time. It is also interesting to observe that whenever an <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code> is combined with a normal runtime value, the result will be a runtime value (because of the implicit conversion). In general, this gives us the following table</p>
141 <table class="doxtable">
142 <tr>
143 <th align="center">left operand </th><th align="center">right operand </th><th align="center">result  </th></tr>
144 <tr>
145 <td align="center"><code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code> </td><td align="center"><code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code> </td><td align="center"><code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code> </td></tr>
146 <tr>
147 <td align="center"><code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code> </td><td align="center">runtime </td><td align="center">runtime </td></tr>
148 <tr>
149 <td align="center">runtime </td><td align="center"><code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code> </td><td align="center">runtime </td></tr>
150 <tr>
151 <td align="center">runtime </td><td align="center">runtime </td><td align="center">runtime </td></tr>
152 </table>
153 <p>The full range of provided operators is</p><ul>
154 <li>Arithmetic: binary <code>+</code>, binary <code>-</code>, <code>/</code>, <code>*</code>, <code>%</code>, unary <code>+</code>, unary <code>-</code></li>
155 <li>Bitwise: <code>~</code>, <code>&amp;</code>, <code>|</code>, <code>^</code>, <code>&lt;&lt;</code>, <code>&gt;&gt;</code></li>
156 <li>Comparison: <code>==</code>, <code>!=</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code></li>
157 <li>Logical: <code>||</code>, <code>&amp;&amp;</code>, <code>!</code></li>
158 </ul>
159 <h2>Construction with user-defined literals </h2>
160 <p><code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code>s of type <code>long long</code> can be created with the <code>_c</code> user-defined literal, which is contained in the <code>literals</code> namespace: </p><div class="fragment"><div class="line"><span class="keyword">using namespace </span>hana::literals; <span class="comment">// contains the _c suffix</span></div><div class="line"></div><div class="line"><a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(1234_c == hana::llong_c&lt;1234&gt;);</div><div class="line"><a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(-1234_c == hana::llong_c&lt;-1234&gt;);</div><div class="line"><a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(1_c + (3_c * 4_c) == hana::llong_c&lt;1 + (3 * 4)&gt;);</div></div><!-- fragment --><h2>Modeled concepts </h2>
161 <ol type="1">
162 <li><code>Constant</code> and <code><a class="el" href="structboost_1_1hana_1_1IntegralConstant.html" title="The IntegralConstant concept represents compile-time integral values. ">IntegralConstant</a></code><br />
163 An <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code> is a model of the <code><a class="el" href="structboost_1_1hana_1_1IntegralConstant.html" title="The IntegralConstant concept represents compile-time integral values. ">IntegralConstant</a></code> concept in the most obvious way possible. Specifically, <div class="fragment"><div class="line"><a class="code" href="group__group-Constant.html#ga1687520692a6b0c49e3a69de2980f388">integral_constant&lt;T, v&gt;::value</a> == v <span class="comment">// of type T</span></div></div><!-- fragment --> The model of <code>Constant</code> follows naturally from the model of <code><a class="el" href="structboost_1_1hana_1_1IntegralConstant.html" title="The IntegralConstant concept represents compile-time integral values. ">IntegralConstant</a></code>, i.e. <div class="fragment"><div class="line">value&lt;integral_constant&lt;T, v&gt;&gt;() == v <span class="comment">// of type T</span></div></div><!-- fragment --></li>
164 <li><code>Comparable</code>, <code>Orderable</code>, <code>Logical</code>, <code>Monoid</code>, <code>Group</code>, <code>Ring</code>, and <code>EuclideanRing</code>, <code>Hashable</code><br />
165 Those models are exactly those provided for <code>Constant</code>s, which are documented in their respective concepts. </li>
166 </ol>
167 </div><table class="memberdecls">
168 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="related"></a>
169 Synopsis of associated functions</h2></td></tr>
170 <tr class="memitem:adeaf00ee03ae0daf97d60d5258bd3703"><td class="memTemplParams" colspan="2">template&lt;bool b&gt; </td></tr>
171 <tr class="memitem:adeaf00ee03ae0daf97d60d5258bd3703"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#adeaf00ee03ae0daf97d60d5258bd3703">bool_</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; bool, b &gt;</td></tr>
172 <tr class="separator:adeaf00ee03ae0daf97d60d5258bd3703"><td class="memSeparator" colspan="2">&#160;</td></tr>
173 <tr class="memitem:ae0cf9368270efc7fdd2aeec497644892"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#ae0cf9368270efc7fdd2aeec497644892">true_</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html#adeaf00ee03ae0daf97d60d5258bd3703">bool_</a>&lt; true &gt;</td></tr>
174 <tr class="separator:ae0cf9368270efc7fdd2aeec497644892"><td class="memSeparator" colspan="2">&#160;</td></tr>
175 <tr class="memitem:a84a8b7c3f824b4f0421d6a834601a0c4"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a84a8b7c3f824b4f0421d6a834601a0c4">false_</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html#adeaf00ee03ae0daf97d60d5258bd3703">bool_</a>&lt; false &gt;</td></tr>
176 <tr class="separator:a84a8b7c3f824b4f0421d6a834601a0c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
177 <tr class="memitem:a08598ceb1797047d8938049b0cad6ccc"><td class="memTemplParams" colspan="2">template&lt;char c&gt; </td></tr>
178 <tr class="memitem:a08598ceb1797047d8938049b0cad6ccc"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a08598ceb1797047d8938049b0cad6ccc">char_</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; char, c &gt;</td></tr>
179 <tr class="separator:a08598ceb1797047d8938049b0cad6ccc"><td class="memSeparator" colspan="2">&#160;</td></tr>
180 <tr class="memitem:a217459eb4ffdd9580b5d8e1bf36d7ac4"><td class="memTemplParams" colspan="2">template&lt;short i&gt; </td></tr>
181 <tr class="memitem:a217459eb4ffdd9580b5d8e1bf36d7ac4"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a217459eb4ffdd9580b5d8e1bf36d7ac4">short_</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; short, i &gt;</td></tr>
182 <tr class="separator:a217459eb4ffdd9580b5d8e1bf36d7ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
183 <tr class="memitem:a69a1bcadc259af364eb87d634c76c12e"><td class="memTemplParams" colspan="2">template&lt;unsigned short i&gt; </td></tr>
184 <tr class="memitem:a69a1bcadc259af364eb87d634c76c12e"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a69a1bcadc259af364eb87d634c76c12e">ushort_</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; unsigned short, i &gt;</td></tr>
185 <tr class="separator:a69a1bcadc259af364eb87d634c76c12e"><td class="memSeparator" colspan="2">&#160;</td></tr>
186 <tr class="memitem:ab4891bf3aec7c15fa2d91c8fbacf4563"><td class="memTemplParams" colspan="2">template&lt;int i&gt; </td></tr>
187 <tr class="memitem:ab4891bf3aec7c15fa2d91c8fbacf4563"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#ab4891bf3aec7c15fa2d91c8fbacf4563">int_</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; int, i &gt;</td></tr>
188 <tr class="separator:ab4891bf3aec7c15fa2d91c8fbacf4563"><td class="memSeparator" colspan="2">&#160;</td></tr>
189 <tr class="memitem:a5071dd223185718f85da1db48fb95d80"><td class="memTemplParams" colspan="2">template&lt;unsigned int i&gt; </td></tr>
190 <tr class="memitem:a5071dd223185718f85da1db48fb95d80"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a5071dd223185718f85da1db48fb95d80">uint</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; unsigned int, i &gt;</td></tr>
191 <tr class="separator:a5071dd223185718f85da1db48fb95d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
192 <tr class="memitem:a41f541c4b34b1972d0e84bf10f7908e1"><td class="memTemplParams" colspan="2">template&lt;long i&gt; </td></tr>
193 <tr class="memitem:a41f541c4b34b1972d0e84bf10f7908e1"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a41f541c4b34b1972d0e84bf10f7908e1">long_</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; long, i &gt;</td></tr>
194 <tr class="separator:a41f541c4b34b1972d0e84bf10f7908e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
195 <tr class="memitem:aedb2b03831973b4b54c5d0abce1af63c"><td class="memTemplParams" colspan="2">template&lt;unsigned long i&gt; </td></tr>
196 <tr class="memitem:aedb2b03831973b4b54c5d0abce1af63c"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#aedb2b03831973b4b54c5d0abce1af63c">ulong</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; unsigned long, i &gt;</td></tr>
197 <tr class="separator:aedb2b03831973b4b54c5d0abce1af63c"><td class="memSeparator" colspan="2">&#160;</td></tr>
198 <tr class="memitem:aa7bf152c582934a70baa1d6c2bc758ba"><td class="memTemplParams" colspan="2">template&lt;long long i&gt; </td></tr>
199 <tr class="memitem:aa7bf152c582934a70baa1d6c2bc758ba"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#aa7bf152c582934a70baa1d6c2bc758ba">llong</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; long long, i &gt;</td></tr>
200 <tr class="separator:aa7bf152c582934a70baa1d6c2bc758ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
201 <tr class="memitem:a112e62e2d698846ca9e3940eb15333d3"><td class="memTemplParams" colspan="2">template&lt;unsigned long long i&gt; </td></tr>
202 <tr class="memitem:a112e62e2d698846ca9e3940eb15333d3"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a112e62e2d698846ca9e3940eb15333d3">ullong</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; unsigned long long, i &gt;</td></tr>
203 <tr class="separator:a112e62e2d698846ca9e3940eb15333d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
204 <tr class="memitem:a022e29dcd19f546f3ac35254f11e56de"><td class="memTemplParams" colspan="2">template&lt;std::size_t i&gt; </td></tr>
205 <tr class="memitem:a022e29dcd19f546f3ac35254f11e56de"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a022e29dcd19f546f3ac35254f11e56de">size_t</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; std::size_t, i &gt;</td></tr>
206 <tr class="separator:a022e29dcd19f546f3ac35254f11e56de"><td class="memSeparator" colspan="2">&#160;</td></tr>
207 <tr class="memitem:a8e52c0f4a65a852dc88f97259a05ff17"><td class="memTemplParams" colspan="2">template&lt;typename T , T v&gt; </td></tr>
208 <tr class="memitem:a8e52c0f4a65a852dc88f97259a05ff17"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt; T, v &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a8e52c0f4a65a852dc88f97259a05ff17">integral_c</a> {}</td></tr>
209 <tr class="memdesc:a8e52c0f4a65a852dc88f97259a05ff17"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code> holding the given compile-time value.  <a href="#a8e52c0f4a65a852dc88f97259a05ff17">More...</a><br /></td></tr>
210 <tr class="separator:a8e52c0f4a65a852dc88f97259a05ff17"><td class="memSeparator" colspan="2">&#160;</td></tr>
211 <tr class="memitem:aa301b96de91d665fdc846bde4659b0d3"><td class="memTemplParams" colspan="2">template&lt;bool b&gt; </td></tr>
212 <tr class="memitem:aa301b96de91d665fdc846bde4659b0d3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#adeaf00ee03ae0daf97d60d5258bd3703">bool_</a>&lt; b &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#aa301b96de91d665fdc846bde4659b0d3">bool_c</a> {}</td></tr>
213 <tr class="separator:aa301b96de91d665fdc846bde4659b0d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
214 <tr class="memitem:a96c109b048f822be0ca7578c93694405"><td class="memItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a96c109b048f822be0ca7578c93694405">true_c</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html#aa301b96de91d665fdc846bde4659b0d3">bool_c</a>&lt;true&gt;</td></tr>
215 <tr class="separator:a96c109b048f822be0ca7578c93694405"><td class="memSeparator" colspan="2">&#160;</td></tr>
216 <tr class="memitem:aec1a5deaa7bcdf7c07c2da4af8959454"><td class="memItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#aec1a5deaa7bcdf7c07c2da4af8959454">false_c</a> = <a class="el" href="structboost_1_1hana_1_1integral__constant.html#aa301b96de91d665fdc846bde4659b0d3">bool_c</a>&lt;false&gt;</td></tr>
217 <tr class="separator:aec1a5deaa7bcdf7c07c2da4af8959454"><td class="memSeparator" colspan="2">&#160;</td></tr>
218 <tr class="memitem:aca22320011be96155645b79fe53dd8c2"><td class="memTemplParams" colspan="2">template&lt;char c&gt; </td></tr>
219 <tr class="memitem:aca22320011be96155645b79fe53dd8c2"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a08598ceb1797047d8938049b0cad6ccc">char_</a>&lt; c &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#aca22320011be96155645b79fe53dd8c2">char_c</a> {}</td></tr>
220 <tr class="separator:aca22320011be96155645b79fe53dd8c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
221 <tr class="memitem:aaf48189e927611ea460974ba01beb2c7"><td class="memTemplParams" colspan="2">template&lt;short i&gt; </td></tr>
222 <tr class="memitem:aaf48189e927611ea460974ba01beb2c7"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a217459eb4ffdd9580b5d8e1bf36d7ac4">short_</a>&lt; i &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#aaf48189e927611ea460974ba01beb2c7">short_c</a> {}</td></tr>
223 <tr class="separator:aaf48189e927611ea460974ba01beb2c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
224 <tr class="memitem:ace7c983d1ffed3a1ff10b5287d2c6ddd"><td class="memTemplParams" colspan="2">template&lt;unsigned short i&gt; </td></tr>
225 <tr class="memitem:ace7c983d1ffed3a1ff10b5287d2c6ddd"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a69a1bcadc259af364eb87d634c76c12e">ushort_</a>&lt; i &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#ace7c983d1ffed3a1ff10b5287d2c6ddd">ushort_c</a> {}</td></tr>
226 <tr class="separator:ace7c983d1ffed3a1ff10b5287d2c6ddd"><td class="memSeparator" colspan="2">&#160;</td></tr>
227 <tr class="memitem:a8669179fa3d068951014b3be07a7d673"><td class="memTemplParams" colspan="2">template&lt;int i&gt; </td></tr>
228 <tr class="memitem:a8669179fa3d068951014b3be07a7d673"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#ab4891bf3aec7c15fa2d91c8fbacf4563">int_</a>&lt; i &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a8669179fa3d068951014b3be07a7d673">int_c</a> {}</td></tr>
229 <tr class="separator:a8669179fa3d068951014b3be07a7d673"><td class="memSeparator" colspan="2">&#160;</td></tr>
230 <tr class="memitem:a79f45e3c2411db1d36127c1341673ffb"><td class="memTemplParams" colspan="2">template&lt;unsigned int i&gt; </td></tr>
231 <tr class="memitem:a79f45e3c2411db1d36127c1341673ffb"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a5071dd223185718f85da1db48fb95d80">uint</a>&lt; i &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a79f45e3c2411db1d36127c1341673ffb">uint_c</a> {}</td></tr>
232 <tr class="separator:a79f45e3c2411db1d36127c1341673ffb"><td class="memSeparator" colspan="2">&#160;</td></tr>
233 <tr class="memitem:ab7e3b17ac89121823916ebd7c6f96235"><td class="memTemplParams" colspan="2">template&lt;long i&gt; </td></tr>
234 <tr class="memitem:ab7e3b17ac89121823916ebd7c6f96235"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a41f541c4b34b1972d0e84bf10f7908e1">long_</a>&lt; i &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#ab7e3b17ac89121823916ebd7c6f96235">long_c</a> {}</td></tr>
235 <tr class="separator:ab7e3b17ac89121823916ebd7c6f96235"><td class="memSeparator" colspan="2">&#160;</td></tr>
236 <tr class="memitem:a65df6bbd2d90432bdcdc709cdbca9921"><td class="memTemplParams" colspan="2">template&lt;unsigned long i&gt; </td></tr>
237 <tr class="memitem:a65df6bbd2d90432bdcdc709cdbca9921"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#aedb2b03831973b4b54c5d0abce1af63c">ulong</a>&lt; i &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a65df6bbd2d90432bdcdc709cdbca9921">ulong_c</a> {}</td></tr>
238 <tr class="separator:a65df6bbd2d90432bdcdc709cdbca9921"><td class="memSeparator" colspan="2">&#160;</td></tr>
239 <tr class="memitem:a81c86537a0d36b8788cba2188314febc"><td class="memTemplParams" colspan="2">template&lt;long long i&gt; </td></tr>
240 <tr class="memitem:a81c86537a0d36b8788cba2188314febc"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#aa7bf152c582934a70baa1d6c2bc758ba">llong</a>&lt; i &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a81c86537a0d36b8788cba2188314febc">llong_c</a> {}</td></tr>
241 <tr class="separator:a81c86537a0d36b8788cba2188314febc"><td class="memSeparator" colspan="2">&#160;</td></tr>
242 <tr class="memitem:a186b6fdf81c9be08f42576cafd63b38d"><td class="memTemplParams" colspan="2">template&lt;unsigned long long i&gt; </td></tr>
243 <tr class="memitem:a186b6fdf81c9be08f42576cafd63b38d"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a112e62e2d698846ca9e3940eb15333d3">ullong</a>&lt; i &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a186b6fdf81c9be08f42576cafd63b38d">ullong_c</a> {}</td></tr>
244 <tr class="separator:a186b6fdf81c9be08f42576cafd63b38d"><td class="memSeparator" colspan="2">&#160;</td></tr>
245 <tr class="memitem:ac49b8fd71a0ef9229511bd7d6cc0f150"><td class="memTemplParams" colspan="2">template&lt;std::size_t i&gt; </td></tr>
246 <tr class="memitem:ac49b8fd71a0ef9229511bd7d6cc0f150"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a022e29dcd19f546f3ac35254f11e56de">size_t</a>&lt; i &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#ac49b8fd71a0ef9229511bd7d6cc0f150">size_c</a> {}</td></tr>
247 <tr class="separator:ac49b8fd71a0ef9229511bd7d6cc0f150"><td class="memSeparator" colspan="2">&#160;</td></tr>
248 <tr class="memitem:a1c078fd00db48686ca9e0aa17f47344e"><td class="memTemplParams" colspan="2">template&lt;char... c&gt; </td></tr>
249 <tr class="memitem:a1c078fd00db48686ca9e0aa17f47344e"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a1c078fd00db48686ca9e0aa17f47344e">operator&quot;&quot;_c</a> ()</td></tr>
250 <tr class="memdesc:a1c078fd00db48686ca9e0aa17f47344e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">hana::integral_constant</a></code> from a literal.  <a href="#a1c078fd00db48686ca9e0aa17f47344e">More...</a><br /></td></tr>
251 <tr class="separator:a1c078fd00db48686ca9e0aa17f47344e"><td class="memSeparator" colspan="2">&#160;</td></tr>
252 </table><table class="memberdecls">
253 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
254 Friends</h2></td></tr>
255 <tr class="memitem:a077af435df78fdb178f98b109c8c4297"><td class="memTemplParams" colspan="2"><a class="anchor" id="a077af435df78fdb178f98b109c8c4297"></a>
256 template&lt;typename X , typename Y &gt; </td></tr>
257 <tr class="memitem:a077af435df78fdb178f98b109c8c4297"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a077af435df78fdb178f98b109c8c4297">operator+</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
258 <tr class="memdesc:a077af435df78fdb178f98b109c8c4297"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Monoid.html#gaeb5d4a1e967e319712f9e4791948896c" title="Associative binary operation on a Monoid. ">hana::plus</a></code> <br /></td></tr>
259 <tr class="separator:a077af435df78fdb178f98b109c8c4297"><td class="memSeparator" colspan="2">&#160;</td></tr>
260 <tr class="memitem:a51facf9760bb93d63efdca06dcf859ad"><td class="memTemplParams" colspan="2"><a class="anchor" id="a51facf9760bb93d63efdca06dcf859ad"></a>
261 template&lt;typename X , typename Y &gt; </td></tr>
262 <tr class="memitem:a51facf9760bb93d63efdca06dcf859ad"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a51facf9760bb93d63efdca06dcf859ad">operator-</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
263 <tr class="memdesc:a51facf9760bb93d63efdca06dcf859ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Group.html#ga2020c526324f361a2b990fe8d1b07c20" title="Subtract two elements of a group.Specifically, this performs the Monoid operation on the first argume...">hana::minus</a></code> <br /></td></tr>
264 <tr class="separator:a51facf9760bb93d63efdca06dcf859ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
265 <tr class="memitem:a6be175332d55b7bfcf1afc33856d9b7d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6be175332d55b7bfcf1afc33856d9b7d"></a>
266 template&lt;typename X &gt; </td></tr>
267 <tr class="memitem:a6be175332d55b7bfcf1afc33856d9b7d"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a6be175332d55b7bfcf1afc33856d9b7d">operator-</a> (X &amp;&amp;x)</td></tr>
268 <tr class="memdesc:a6be175332d55b7bfcf1afc33856d9b7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Group.html#ga02e81002f40ba52eac4cf1974c7e0cdb" title="Return the inverse of an element of a group. ">hana::negate</a></code> <br /></td></tr>
269 <tr class="separator:a6be175332d55b7bfcf1afc33856d9b7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
270 <tr class="memitem:a673f1d9212ae61e8cee093af002bc110"><td class="memTemplParams" colspan="2"><a class="anchor" id="a673f1d9212ae61e8cee093af002bc110"></a>
271 template&lt;typename X , typename Y &gt; </td></tr>
272 <tr class="memitem:a673f1d9212ae61e8cee093af002bc110"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a673f1d9212ae61e8cee093af002bc110">operator*</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
273 <tr class="memdesc:a673f1d9212ae61e8cee093af002bc110"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Ring.html#ga052d31c269a6a438cc8004c9ad1efdfa" title="Associative operation of a Ring. ">hana::mult</a></code> <br /></td></tr>
274 <tr class="separator:a673f1d9212ae61e8cee093af002bc110"><td class="memSeparator" colspan="2">&#160;</td></tr>
275 <tr class="memitem:ab8b66ff58605e53149aad7eca0922ad7"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab8b66ff58605e53149aad7eca0922ad7"></a>
276 template&lt;typename X , typename Y &gt; </td></tr>
277 <tr class="memitem:ab8b66ff58605e53149aad7eca0922ad7"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#ab8b66ff58605e53149aad7eca0922ad7">operator/</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
278 <tr class="memdesc:ab8b66ff58605e53149aad7eca0922ad7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-EuclideanRing.html#ga4225a7988ce98903228913dde53762df" title="Generalized integer division. ">hana::div</a></code> <br /></td></tr>
279 <tr class="separator:ab8b66ff58605e53149aad7eca0922ad7"><td class="memSeparator" colspan="2">&#160;</td></tr>
280 <tr class="memitem:ad2fabb33632e115e96d0b7474670e6a1"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad2fabb33632e115e96d0b7474670e6a1"></a>
281 template&lt;typename X , typename Y &gt; </td></tr>
282 <tr class="memitem:ad2fabb33632e115e96d0b7474670e6a1"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#ad2fabb33632e115e96d0b7474670e6a1">operator%</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
283 <tr class="memdesc:ad2fabb33632e115e96d0b7474670e6a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-EuclideanRing.html#ga9b47b223d5b02db933b3c93b5bd1a062" title="Generalized integer modulus.Given two elements of an EuclideanRing x and y, with y nonzero...">hana::mod</a></code> <br /></td></tr>
284 <tr class="separator:ad2fabb33632e115e96d0b7474670e6a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
285 <tr class="memitem:a27607958295e6da8a0ba602a2db468f1"><td class="memTemplParams" colspan="2"><a class="anchor" id="a27607958295e6da8a0ba602a2db468f1"></a>
286 template&lt;typename X , typename Y &gt; </td></tr>
287 <tr class="memitem:a27607958295e6da8a0ba602a2db468f1"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a27607958295e6da8a0ba602a2db468f1">operator==</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
288 <tr class="memdesc:a27607958295e6da8a0ba602a2db468f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Comparable.html#gacaf1ebea6b3ab96ac9dcb82f0e64e547" title="Returns a Logical representing whether x is equal to y.The equal function can be called in two differ...">hana::equal</a></code> <br /></td></tr>
289 <tr class="separator:a27607958295e6da8a0ba602a2db468f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
290 <tr class="memitem:a0cae3af55edb3eb05bfa184bda633f7d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0cae3af55edb3eb05bfa184bda633f7d"></a>
291 template&lt;typename X , typename Y &gt; </td></tr>
292 <tr class="memitem:a0cae3af55edb3eb05bfa184bda633f7d"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a0cae3af55edb3eb05bfa184bda633f7d">operator!=</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
293 <tr class="memdesc:a0cae3af55edb3eb05bfa184bda633f7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Comparable.html#gae33be2e0d5e04f19082f4b7740dfc9cd" title="Returns a Logical representing whether x is not equal to y.The not_equal function can be called in tw...">hana::not_equal</a></code> <br /></td></tr>
294 <tr class="separator:a0cae3af55edb3eb05bfa184bda633f7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
295 <tr class="memitem:a883a869b5e96e32744ebf75d63c763ae"><td class="memTemplParams" colspan="2"><a class="anchor" id="a883a869b5e96e32744ebf75d63c763ae"></a>
296 template&lt;typename X , typename Y &gt; </td></tr>
297 <tr class="memitem:a883a869b5e96e32744ebf75d63c763ae"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a883a869b5e96e32744ebf75d63c763ae">operator||</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
298 <tr class="memdesc:a883a869b5e96e32744ebf75d63c763ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Logical.html#ga68c00efbeb69339bfa157a78ebdd3f87" title="Return whether any of the arguments is true-valued.or_ can be called with one argument or more...">hana::or_</a></code> <br /></td></tr>
299 <tr class="separator:a883a869b5e96e32744ebf75d63c763ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
300 <tr class="memitem:a47d2d5df22fc559270029d5eabaae61a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a47d2d5df22fc559270029d5eabaae61a"></a>
301 template&lt;typename X , typename Y &gt; </td></tr>
302 <tr class="memitem:a47d2d5df22fc559270029d5eabaae61a"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a47d2d5df22fc559270029d5eabaae61a">operator&amp;&amp;</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
303 <tr class="memdesc:a47d2d5df22fc559270029d5eabaae61a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Logical.html#ga14066f5672867c123524e0e0978069eb" title="Return whether all the arguments are true-valued.and_ can be called with one argument or more...">hana::and_</a></code> <br /></td></tr>
304 <tr class="separator:a47d2d5df22fc559270029d5eabaae61a"><td class="memSeparator" colspan="2">&#160;</td></tr>
305 <tr class="memitem:a7d9f9e5adeb222e676ee02d6f28198ee"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7d9f9e5adeb222e676ee02d6f28198ee"></a>
306 template&lt;typename X &gt; </td></tr>
307 <tr class="memitem:a7d9f9e5adeb222e676ee02d6f28198ee"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a7d9f9e5adeb222e676ee02d6f28198ee">operator!</a> (X &amp;&amp;x)</td></tr>
308 <tr class="memdesc:a7d9f9e5adeb222e676ee02d6f28198ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Logical.html#ga4a7c9d7037601d5e553fd20777958980" title="Negates a Logical.This method returns a Logical with the same tag, but whose truth-value is negated...">hana::not_</a></code> <br /></td></tr>
309 <tr class="separator:a7d9f9e5adeb222e676ee02d6f28198ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
310 <tr class="memitem:ada078dcf9e68b8e9a82b33c75dde8457"><td class="memTemplParams" colspan="2"><a class="anchor" id="ada078dcf9e68b8e9a82b33c75dde8457"></a>
311 template&lt;typename X , typename Y &gt; </td></tr>
312 <tr class="memitem:ada078dcf9e68b8e9a82b33c75dde8457"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#ada078dcf9e68b8e9a82b33c75dde8457">operator&lt;</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
313 <tr class="memdesc:ada078dcf9e68b8e9a82b33c75dde8457"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Orderable.html#gad510011602bdb14686f1c4ec145301c9" title="Returns a Logical representing whether x is less than y. ">hana::less</a></code> <br /></td></tr>
314 <tr class="separator:ada078dcf9e68b8e9a82b33c75dde8457"><td class="memSeparator" colspan="2">&#160;</td></tr>
315 <tr class="memitem:aedd11fddefddbbbb87d3b24c7117528f"><td class="memTemplParams" colspan="2"><a class="anchor" id="aedd11fddefddbbbb87d3b24c7117528f"></a>
316 template&lt;typename X , typename Y &gt; </td></tr>
317 <tr class="memitem:aedd11fddefddbbbb87d3b24c7117528f"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#aedd11fddefddbbbb87d3b24c7117528f">operator&gt;</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
318 <tr class="memdesc:aedd11fddefddbbbb87d3b24c7117528f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Orderable.html#gaf9a073eafebbe514fb19dff82318f198" title="Returns a Logical representing whether x is greater than y. ">hana::greater</a></code> <br /></td></tr>
319 <tr class="separator:aedd11fddefddbbbb87d3b24c7117528f"><td class="memSeparator" colspan="2">&#160;</td></tr>
320 <tr class="memitem:a53817979990da799e659b2576799a79a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a53817979990da799e659b2576799a79a"></a>
321 template&lt;typename X , typename Y &gt; </td></tr>
322 <tr class="memitem:a53817979990da799e659b2576799a79a"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a53817979990da799e659b2576799a79a">operator&lt;=</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
323 <tr class="memdesc:a53817979990da799e659b2576799a79a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Orderable.html#ga9917dd82beb67151bf5657245d37b851" title="Returns a Logical representing whether x is less than or equal to y. ">hana::less_equal</a></code> <br /></td></tr>
324 <tr class="separator:a53817979990da799e659b2576799a79a"><td class="memSeparator" colspan="2">&#160;</td></tr>
325 <tr class="memitem:aa3f0436b623de5208767751e1e9f7e59"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa3f0436b623de5208767751e1e9f7e59"></a>
326 template&lt;typename X , typename Y &gt; </td></tr>
327 <tr class="memitem:aa3f0436b623de5208767751e1e9f7e59"><td class="memTemplItemLeft" align="right" valign="top">constexpr auto&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#aa3f0436b623de5208767751e1e9f7e59">operator&gt;=</a> (X &amp;&amp;x, Y &amp;&amp;y)</td></tr>
328 <tr class="memdesc:aa3f0436b623de5208767751e1e9f7e59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code><a class="el" href="group__group-Orderable.html#ga6023631e7d0a01e16dc3fa4221fbd703" title="Returns a Logical representing whether x is greater than or equal to y. ">hana::greater_equal</a></code> <br /></td></tr>
329 <tr class="separator:aa3f0436b623de5208767751e1e9f7e59"><td class="memSeparator" colspan="2">&#160;</td></tr>
330 </table><table class="memberdecls">
331 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
332 Static Public Member Functions</h2></td></tr>
333 <tr class="memitem:a2d4bda4a9114a5e803a91def599fae76"><td class="memTemplParams" colspan="2">template&lt;typename F &gt; </td></tr>
334 <tr class="memitem:a2d4bda4a9114a5e803a91def599fae76"><td class="memTemplItemLeft" align="right" valign="top">static constexpr void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1integral__constant.html#a2d4bda4a9114a5e803a91def599fae76">times</a> (F &amp;&amp;f)</td></tr>
335 <tr class="memdesc:a2d4bda4a9114a5e803a91def599fae76"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call a function n times.  <a href="#a2d4bda4a9114a5e803a91def599fae76">More...</a><br /></td></tr>
336 <tr class="separator:a2d4bda4a9114a5e803a91def599fae76"><td class="memSeparator" colspan="2">&#160;</td></tr>
337 </table>
338 <h2 class="groupheader">Associated functions</h2>
339 <a class="anchor" id="adeaf00ee03ae0daf97d60d5258bd3703"></a>
340 <div class="memitem">
341 <div class="memproto">
342 <div class="memtemplate">
343 template&lt;typename T, T v&gt; </div>
344 <div class="memtemplate">
345 template&lt;bool b&gt; </div>
346 <table class="mlabels">
347   <tr>
348   <td class="mlabels-left">
349       <table class="memname">
350         <tr>
351           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#adeaf00ee03ae0daf97d60d5258bd3703">bool_</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;bool, b&gt;</td>
352         </tr>
353       </table>
354   </td>
355   <td class="mlabels-right">
356 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
357   </tr>
358 </table>
359 </div><div class="memdoc">
360
361 </div>
362 </div>
363 <a class="anchor" id="ae0cf9368270efc7fdd2aeec497644892"></a>
364 <div class="memitem">
365 <div class="memproto">
366 <div class="memtemplate">
367 template&lt;typename T, T v&gt; </div>
368 <table class="mlabels">
369   <tr>
370   <td class="mlabels-left">
371       <table class="memname">
372         <tr>
373           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#ae0cf9368270efc7fdd2aeec497644892">true_</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html#adeaf00ee03ae0daf97d60d5258bd3703">bool_</a>&lt;true&gt;</td>
374         </tr>
375       </table>
376   </td>
377   <td class="mlabels-right">
378 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
379   </tr>
380 </table>
381 </div><div class="memdoc">
382
383 </div>
384 </div>
385 <a class="anchor" id="a84a8b7c3f824b4f0421d6a834601a0c4"></a>
386 <div class="memitem">
387 <div class="memproto">
388 <div class="memtemplate">
389 template&lt;typename T, T v&gt; </div>
390 <table class="mlabels">
391   <tr>
392   <td class="mlabels-left">
393       <table class="memname">
394         <tr>
395           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a84a8b7c3f824b4f0421d6a834601a0c4">false_</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html#adeaf00ee03ae0daf97d60d5258bd3703">bool_</a>&lt;false&gt;</td>
396         </tr>
397       </table>
398   </td>
399   <td class="mlabels-right">
400 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
401   </tr>
402 </table>
403 </div><div class="memdoc">
404
405 </div>
406 </div>
407 <a class="anchor" id="a08598ceb1797047d8938049b0cad6ccc"></a>
408 <div class="memitem">
409 <div class="memproto">
410 <div class="memtemplate">
411 template&lt;typename T, T v&gt; </div>
412 <div class="memtemplate">
413 template&lt;char c&gt; </div>
414 <table class="mlabels">
415   <tr>
416   <td class="mlabels-left">
417       <table class="memname">
418         <tr>
419           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a08598ceb1797047d8938049b0cad6ccc">char_</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;char, c&gt;</td>
420         </tr>
421       </table>
422   </td>
423   <td class="mlabels-right">
424 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
425   </tr>
426 </table>
427 </div><div class="memdoc">
428
429 </div>
430 </div>
431 <a class="anchor" id="a217459eb4ffdd9580b5d8e1bf36d7ac4"></a>
432 <div class="memitem">
433 <div class="memproto">
434 <div class="memtemplate">
435 template&lt;typename T, T v&gt; </div>
436 <div class="memtemplate">
437 template&lt;short i&gt; </div>
438 <table class="mlabels">
439   <tr>
440   <td class="mlabels-left">
441       <table class="memname">
442         <tr>
443           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a217459eb4ffdd9580b5d8e1bf36d7ac4">short_</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;short, i&gt;</td>
444         </tr>
445       </table>
446   </td>
447   <td class="mlabels-right">
448 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
449   </tr>
450 </table>
451 </div><div class="memdoc">
452
453 </div>
454 </div>
455 <a class="anchor" id="a69a1bcadc259af364eb87d634c76c12e"></a>
456 <div class="memitem">
457 <div class="memproto">
458 <div class="memtemplate">
459 template&lt;typename T, T v&gt; </div>
460 <div class="memtemplate">
461 template&lt;unsigned short i&gt; </div>
462 <table class="mlabels">
463   <tr>
464   <td class="mlabels-left">
465       <table class="memname">
466         <tr>
467           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a69a1bcadc259af364eb87d634c76c12e">ushort_</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;unsigned short, i&gt;</td>
468         </tr>
469       </table>
470   </td>
471   <td class="mlabels-right">
472 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
473   </tr>
474 </table>
475 </div><div class="memdoc">
476
477 </div>
478 </div>
479 <a class="anchor" id="ab4891bf3aec7c15fa2d91c8fbacf4563"></a>
480 <div class="memitem">
481 <div class="memproto">
482 <div class="memtemplate">
483 template&lt;typename T, T v&gt; </div>
484 <div class="memtemplate">
485 template&lt;int i&gt; </div>
486 <table class="mlabels">
487   <tr>
488   <td class="mlabels-left">
489       <table class="memname">
490         <tr>
491           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#ab4891bf3aec7c15fa2d91c8fbacf4563">int_</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;int, i&gt;</td>
492         </tr>
493       </table>
494   </td>
495   <td class="mlabels-right">
496 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
497   </tr>
498 </table>
499 </div><div class="memdoc">
500
501 </div>
502 </div>
503 <a class="anchor" id="a5071dd223185718f85da1db48fb95d80"></a>
504 <div class="memitem">
505 <div class="memproto">
506 <div class="memtemplate">
507 template&lt;typename T, T v&gt; </div>
508 <div class="memtemplate">
509 template&lt;unsigned int i&gt; </div>
510 <table class="mlabels">
511   <tr>
512   <td class="mlabels-left">
513       <table class="memname">
514         <tr>
515           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a5071dd223185718f85da1db48fb95d80">uint</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;unsigned int, i&gt;</td>
516         </tr>
517       </table>
518   </td>
519   <td class="mlabels-right">
520 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
521   </tr>
522 </table>
523 </div><div class="memdoc">
524
525 </div>
526 </div>
527 <a class="anchor" id="a41f541c4b34b1972d0e84bf10f7908e1"></a>
528 <div class="memitem">
529 <div class="memproto">
530 <div class="memtemplate">
531 template&lt;typename T, T v&gt; </div>
532 <div class="memtemplate">
533 template&lt;long i&gt; </div>
534 <table class="mlabels">
535   <tr>
536   <td class="mlabels-left">
537       <table class="memname">
538         <tr>
539           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a41f541c4b34b1972d0e84bf10f7908e1">long_</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;long, i&gt;</td>
540         </tr>
541       </table>
542   </td>
543   <td class="mlabels-right">
544 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
545   </tr>
546 </table>
547 </div><div class="memdoc">
548
549 </div>
550 </div>
551 <a class="anchor" id="aedb2b03831973b4b54c5d0abce1af63c"></a>
552 <div class="memitem">
553 <div class="memproto">
554 <div class="memtemplate">
555 template&lt;typename T, T v&gt; </div>
556 <div class="memtemplate">
557 template&lt;unsigned long i&gt; </div>
558 <table class="mlabels">
559   <tr>
560   <td class="mlabels-left">
561       <table class="memname">
562         <tr>
563           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#aedb2b03831973b4b54c5d0abce1af63c">ulong</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;unsigned long, i&gt;</td>
564         </tr>
565       </table>
566   </td>
567   <td class="mlabels-right">
568 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
569   </tr>
570 </table>
571 </div><div class="memdoc">
572
573 </div>
574 </div>
575 <a class="anchor" id="aa7bf152c582934a70baa1d6c2bc758ba"></a>
576 <div class="memitem">
577 <div class="memproto">
578 <div class="memtemplate">
579 template&lt;typename T, T v&gt; </div>
580 <div class="memtemplate">
581 template&lt;long long i&gt; </div>
582 <table class="mlabels">
583   <tr>
584   <td class="mlabels-left">
585       <table class="memname">
586         <tr>
587           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#aa7bf152c582934a70baa1d6c2bc758ba">llong</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;long long, i&gt;</td>
588         </tr>
589       </table>
590   </td>
591   <td class="mlabels-right">
592 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
593   </tr>
594 </table>
595 </div><div class="memdoc">
596
597 </div>
598 </div>
599 <a class="anchor" id="a112e62e2d698846ca9e3940eb15333d3"></a>
600 <div class="memitem">
601 <div class="memproto">
602 <div class="memtemplate">
603 template&lt;typename T, T v&gt; </div>
604 <div class="memtemplate">
605 template&lt;unsigned long long i&gt; </div>
606 <table class="mlabels">
607   <tr>
608   <td class="mlabels-left">
609       <table class="memname">
610         <tr>
611           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a112e62e2d698846ca9e3940eb15333d3">ullong</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;unsigned long long, i&gt;</td>
612         </tr>
613       </table>
614   </td>
615   <td class="mlabels-right">
616 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
617   </tr>
618 </table>
619 </div><div class="memdoc">
620
621 </div>
622 </div>
623 <a class="anchor" id="a022e29dcd19f546f3ac35254f11e56de"></a>
624 <div class="memitem">
625 <div class="memproto">
626 <div class="memtemplate">
627 template&lt;typename T, T v&gt; </div>
628 <div class="memtemplate">
629 template&lt;std::size_t i&gt; </div>
630 <table class="mlabels">
631   <tr>
632   <td class="mlabels-left">
633       <table class="memname">
634         <tr>
635           <td class="memname">using <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a022e29dcd19f546f3ac35254f11e56de">size_t</a> =  <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;std::size_t, i&gt;</td>
636         </tr>
637       </table>
638   </td>
639   <td class="mlabels-right">
640 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
641   </tr>
642 </table>
643 </div><div class="memdoc">
644
645 </div>
646 </div>
647 <a class="anchor" id="a8e52c0f4a65a852dc88f97259a05ff17"></a>
648 <div class="memitem">
649 <div class="memproto">
650 <div class="memtemplate">
651 template&lt;typename T, T v&gt; </div>
652 <div class="memtemplate">
653 template&lt;typename T , T v&gt; </div>
654 <table class="mlabels">
655   <tr>
656   <td class="mlabels-left">
657       <table class="memname">
658         <tr>
659           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a>&lt;T, v&gt; integral_c {}</td>
660         </tr>
661       </table>
662   </td>
663   <td class="mlabels-right">
664 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
665   </tr>
666 </table>
667 </div><div class="memdoc">
668
669 <p>Creates an <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code> holding the given compile-time value. </p>
670 <p>Specifically, <code>integral_c&lt;T, v&gt;</code> is a <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">hana::integral_constant</a></code> holding the compile-time value <code>v</code> of an integral type <code>T</code>.</p>
671 <dl class="tparams"><dt>Template Parameters</dt><dd>
672   <table class="tparams">
673     <tr><td class="paramname">T</td><td>The type of the value to hold in the <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code>. It must be an integral type.</td></tr>
674     <tr><td class="paramname">v</td><td>The integral value to hold in the <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code>.</td></tr>
675   </table>
676   </dd>
677 </dl>
678 <h2>Example </h2>
679 <div class="fragment"><div class="line"><a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(hana::integral_c&lt;int, 2&gt; == hana::int_c&lt;2&gt;);</div><div class="line">static_assert(decltype(hana::integral_c&lt;int, 2&gt;)::<a class="code" href="group__group-Constant.html#ga1687520692a6b0c49e3a69de2980f388">value</a> == 2, <span class="stringliteral">&quot;&quot;</span>);</div></div><!-- fragment -->
680 </div>
681 </div>
682 <a class="anchor" id="aa301b96de91d665fdc846bde4659b0d3"></a>
683 <div class="memitem">
684 <div class="memproto">
685 <div class="memtemplate">
686 template&lt;typename T, T v&gt; </div>
687 <div class="memtemplate">
688 template&lt;bool b&gt; </div>
689 <table class="mlabels">
690   <tr>
691   <td class="mlabels-left">
692       <table class="memname">
693         <tr>
694           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#adeaf00ee03ae0daf97d60d5258bd3703">bool_</a>&lt;b&gt; bool_c {}</td>
695         </tr>
696       </table>
697   </td>
698   <td class="mlabels-right">
699 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
700   </tr>
701 </table>
702 </div><div class="memdoc">
703
704 </div>
705 </div>
706 <a class="anchor" id="a96c109b048f822be0ca7578c93694405"></a>
707 <div class="memitem">
708 <div class="memproto">
709 <div class="memtemplate">
710 template&lt;typename T, T v&gt; </div>
711 <table class="mlabels">
712   <tr>
713   <td class="mlabels-left">
714       <table class="memname">
715         <tr>
716           <td class="memname">constexpr auto true_c = <a class="el" href="structboost_1_1hana_1_1integral__constant.html#aa301b96de91d665fdc846bde4659b0d3">bool_c</a>&lt;true&gt;</td>
717         </tr>
718       </table>
719   </td>
720   <td class="mlabels-right">
721 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
722   </tr>
723 </table>
724 </div><div class="memdoc">
725
726 </div>
727 </div>
728 <a class="anchor" id="aec1a5deaa7bcdf7c07c2da4af8959454"></a>
729 <div class="memitem">
730 <div class="memproto">
731 <div class="memtemplate">
732 template&lt;typename T, T v&gt; </div>
733 <table class="mlabels">
734   <tr>
735   <td class="mlabels-left">
736       <table class="memname">
737         <tr>
738           <td class="memname">constexpr auto false_c = <a class="el" href="structboost_1_1hana_1_1integral__constant.html#aa301b96de91d665fdc846bde4659b0d3">bool_c</a>&lt;false&gt;</td>
739         </tr>
740       </table>
741   </td>
742   <td class="mlabels-right">
743 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
744   </tr>
745 </table>
746 </div><div class="memdoc">
747
748 </div>
749 </div>
750 <a class="anchor" id="aca22320011be96155645b79fe53dd8c2"></a>
751 <div class="memitem">
752 <div class="memproto">
753 <div class="memtemplate">
754 template&lt;typename T, T v&gt; </div>
755 <div class="memtemplate">
756 template&lt;char c&gt; </div>
757 <table class="mlabels">
758   <tr>
759   <td class="mlabels-left">
760       <table class="memname">
761         <tr>
762           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a08598ceb1797047d8938049b0cad6ccc">char_</a>&lt;c&gt; char_c {}</td>
763         </tr>
764       </table>
765   </td>
766   <td class="mlabels-right">
767 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
768   </tr>
769 </table>
770 </div><div class="memdoc">
771
772 </div>
773 </div>
774 <a class="anchor" id="aaf48189e927611ea460974ba01beb2c7"></a>
775 <div class="memitem">
776 <div class="memproto">
777 <div class="memtemplate">
778 template&lt;typename T, T v&gt; </div>
779 <div class="memtemplate">
780 template&lt;short i&gt; </div>
781 <table class="mlabels">
782   <tr>
783   <td class="mlabels-left">
784       <table class="memname">
785         <tr>
786           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a217459eb4ffdd9580b5d8e1bf36d7ac4">short_</a>&lt;i&gt; short_c {}</td>
787         </tr>
788       </table>
789   </td>
790   <td class="mlabels-right">
791 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
792   </tr>
793 </table>
794 </div><div class="memdoc">
795
796 </div>
797 </div>
798 <a class="anchor" id="ace7c983d1ffed3a1ff10b5287d2c6ddd"></a>
799 <div class="memitem">
800 <div class="memproto">
801 <div class="memtemplate">
802 template&lt;typename T, T v&gt; </div>
803 <div class="memtemplate">
804 template&lt;unsigned short i&gt; </div>
805 <table class="mlabels">
806   <tr>
807   <td class="mlabels-left">
808       <table class="memname">
809         <tr>
810           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a69a1bcadc259af364eb87d634c76c12e">ushort_</a>&lt;i&gt; ushort_c {}</td>
811         </tr>
812       </table>
813   </td>
814   <td class="mlabels-right">
815 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
816   </tr>
817 </table>
818 </div><div class="memdoc">
819
820 </div>
821 </div>
822 <a class="anchor" id="a8669179fa3d068951014b3be07a7d673"></a>
823 <div class="memitem">
824 <div class="memproto">
825 <div class="memtemplate">
826 template&lt;typename T, T v&gt; </div>
827 <div class="memtemplate">
828 template&lt;int i&gt; </div>
829 <table class="mlabels">
830   <tr>
831   <td class="mlabels-left">
832       <table class="memname">
833         <tr>
834           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#ab4891bf3aec7c15fa2d91c8fbacf4563">int_</a>&lt;i&gt; int_c {}</td>
835         </tr>
836       </table>
837   </td>
838   <td class="mlabels-right">
839 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
840   </tr>
841 </table>
842 </div><div class="memdoc">
843
844 </div>
845 </div>
846 <a class="anchor" id="a79f45e3c2411db1d36127c1341673ffb"></a>
847 <div class="memitem">
848 <div class="memproto">
849 <div class="memtemplate">
850 template&lt;typename T, T v&gt; </div>
851 <div class="memtemplate">
852 template&lt;unsigned int i&gt; </div>
853 <table class="mlabels">
854   <tr>
855   <td class="mlabels-left">
856       <table class="memname">
857         <tr>
858           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a5071dd223185718f85da1db48fb95d80">uint</a>&lt;i&gt; uint_c {}</td>
859         </tr>
860       </table>
861   </td>
862   <td class="mlabels-right">
863 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
864   </tr>
865 </table>
866 </div><div class="memdoc">
867
868 </div>
869 </div>
870 <a class="anchor" id="ab7e3b17ac89121823916ebd7c6f96235"></a>
871 <div class="memitem">
872 <div class="memproto">
873 <div class="memtemplate">
874 template&lt;typename T, T v&gt; </div>
875 <div class="memtemplate">
876 template&lt;long i&gt; </div>
877 <table class="mlabels">
878   <tr>
879   <td class="mlabels-left">
880       <table class="memname">
881         <tr>
882           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a41f541c4b34b1972d0e84bf10f7908e1">long_</a>&lt;i&gt; long_c {}</td>
883         </tr>
884       </table>
885   </td>
886   <td class="mlabels-right">
887 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
888   </tr>
889 </table>
890 </div><div class="memdoc">
891
892 </div>
893 </div>
894 <a class="anchor" id="a65df6bbd2d90432bdcdc709cdbca9921"></a>
895 <div class="memitem">
896 <div class="memproto">
897 <div class="memtemplate">
898 template&lt;typename T, T v&gt; </div>
899 <div class="memtemplate">
900 template&lt;unsigned long i&gt; </div>
901 <table class="mlabels">
902   <tr>
903   <td class="mlabels-left">
904       <table class="memname">
905         <tr>
906           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#aedb2b03831973b4b54c5d0abce1af63c">ulong</a>&lt;i&gt; ulong_c {}</td>
907         </tr>
908       </table>
909   </td>
910   <td class="mlabels-right">
911 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
912   </tr>
913 </table>
914 </div><div class="memdoc">
915
916 </div>
917 </div>
918 <a class="anchor" id="a81c86537a0d36b8788cba2188314febc"></a>
919 <div class="memitem">
920 <div class="memproto">
921 <div class="memtemplate">
922 template&lt;typename T, T v&gt; </div>
923 <div class="memtemplate">
924 template&lt;long long i&gt; </div>
925 <table class="mlabels">
926   <tr>
927   <td class="mlabels-left">
928       <table class="memname">
929         <tr>
930           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#aa7bf152c582934a70baa1d6c2bc758ba">llong</a>&lt;i&gt; llong_c {}</td>
931         </tr>
932       </table>
933   </td>
934   <td class="mlabels-right">
935 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
936   </tr>
937 </table>
938 </div><div class="memdoc">
939
940 </div>
941 </div>
942 <a class="anchor" id="a186b6fdf81c9be08f42576cafd63b38d"></a>
943 <div class="memitem">
944 <div class="memproto">
945 <div class="memtemplate">
946 template&lt;typename T, T v&gt; </div>
947 <div class="memtemplate">
948 template&lt;unsigned long long i&gt; </div>
949 <table class="mlabels">
950   <tr>
951   <td class="mlabels-left">
952       <table class="memname">
953         <tr>
954           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a112e62e2d698846ca9e3940eb15333d3">ullong</a>&lt;i&gt; ullong_c {}</td>
955         </tr>
956       </table>
957   </td>
958   <td class="mlabels-right">
959 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
960   </tr>
961 </table>
962 </div><div class="memdoc">
963
964 </div>
965 </div>
966 <a class="anchor" id="ac49b8fd71a0ef9229511bd7d6cc0f150"></a>
967 <div class="memitem">
968 <div class="memproto">
969 <div class="memtemplate">
970 template&lt;typename T, T v&gt; </div>
971 <div class="memtemplate">
972 template&lt;std::size_t i&gt; </div>
973 <table class="mlabels">
974   <tr>
975   <td class="mlabels-left">
976       <table class="memname">
977         <tr>
978           <td class="memname">constexpr <a class="el" href="structboost_1_1hana_1_1integral__constant.html#a022e29dcd19f546f3ac35254f11e56de">size_t</a>&lt;i&gt; size_c {}</td>
979         </tr>
980       </table>
981   </td>
982   <td class="mlabels-right">
983 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
984   </tr>
985 </table>
986 </div><div class="memdoc">
987
988 </div>
989 </div>
990 <a class="anchor" id="a1c078fd00db48686ca9e0aa17f47344e"></a>
991 <div class="memitem">
992 <div class="memproto">
993 <div class="memtemplate">
994 template&lt;char... c&gt; </div>
995 <table class="mlabels">
996   <tr>
997   <td class="mlabels-left">
998       <table class="memname">
999         <tr>
1000           <td class="memname">constexpr auto operator&quot;&quot;_c </td>
1001           <td>(</td>
1002           <td class="paramname"></td><td>)</td>
1003           <td></td>
1004         </tr>
1005       </table>
1006   </td>
1007   <td class="mlabels-right">
1008 <span class="mlabels"><span class="mlabel">related</span></span>  </td>
1009   </tr>
1010 </table>
1011 </div><div class="memdoc">
1012
1013 <p>Creates a <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">hana::integral_constant</a></code> from a literal. </p>
1014 <p>The literal is parsed at compile-time and the result is returned as a <code>llong&lt;...&gt;</code>.</p>
1015 <dl class="section note"><dt>Note</dt><dd>We use <code>llong&lt;...&gt;</code> instead of <code>ullong&lt;...&gt;</code> because using an unsigned type leads to unexpected behavior when doing stuff like <code>-1_c</code>. If we used an unsigned type, <code>-1_c</code> would be something like <code>ullong&lt;-1&gt;</code> which is actually <code>ullong&lt;something huge&gt;</code>.</dd></dl>
1016 <h2>Example </h2>
1017 <div class="fragment"><div class="line"><span class="keyword">using namespace </span>hana::literals; <span class="comment">// contains the _c suffix</span></div><div class="line"></div><div class="line"><a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(1234_c == hana::llong_c&lt;1234&gt;);</div><div class="line"><a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(-1234_c == hana::llong_c&lt;-1234&gt;);</div><div class="line"><a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(1_c + (3_c * 4_c) == hana::llong_c&lt;1 + (3 * 4)&gt;);</div></div><!-- fragment -->
1018 </div>
1019 </div>
1020 <h2 class="groupheader">Member Function Documentation</h2>
1021 <a class="anchor" id="a2d4bda4a9114a5e803a91def599fae76"></a>
1022 <div class="memitem">
1023 <div class="memproto">
1024 <div class="memtemplate">
1025 template&lt;typename T, T v&gt; </div>
1026 <div class="memtemplate">
1027 template&lt;typename F &gt; </div>
1028 <table class="mlabels">
1029   <tr>
1030   <td class="mlabels-left">
1031       <table class="memname">
1032         <tr>
1033           <td class="memname">static constexpr void <a class="el" href="structboost_1_1hana_1_1integral__constant.html">boost::hana::integral_constant</a>&lt; T, v &gt;::times </td>
1034           <td>(</td>
1035           <td class="paramtype">F &amp;&amp;&#160;</td>
1036           <td class="paramname"><em>f</em></td><td>)</td>
1037           <td></td>
1038         </tr>
1039       </table>
1040   </td>
1041   <td class="mlabels-right">
1042 <span class="mlabels"><span class="mlabel">static</span></span>  </td>
1043   </tr>
1044 </table>
1045 </div><div class="memdoc">
1046
1047 <p>Call a function n times. </p>
1048 <p><code>times</code> allows a nullary function to be invoked <code>n</code> times: </p><div class="fragment"><div class="line"><a class="code" href="structboost_1_1hana_1_1integral__constant.html#a2d4bda4a9114a5e803a91def599fae76">int_&lt;3&gt;::times</a>(f)</div></div><!-- fragment --><p> should be expanded by any decent compiler to </p><div class="fragment"><div class="line">f(); f(); f();</div></div><!-- fragment --><p>This can be useful in several contexts, e.g. for loop unrolling: </p><div class="fragment"><div class="line">std::string s;</div><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">char</span> c = <span class="charliteral">&#39;x&#39;</span>; c &lt;= <span class="charliteral">&#39;z&#39;</span>; ++c)</div><div class="line">    hana::int_&lt;5&gt;::times([&amp;] { s += c; });</div><div class="line"></div><div class="line"><a class="code" href="group__group-assertions.html#ga29b2b21ffa5513e5b706c50ffee980af">BOOST_HANA_RUNTIME_CHECK</a>(s == <span class="stringliteral">&quot;xxxxxyyyyyzzzzz&quot;</span>);</div></div><!-- fragment --><p> Note that <code>times</code> is really a static function object, not just a static function. This allows <code>int_&lt;n&gt;::times</code> to be passed to higher-order algorithms: </p><div class="fragment"><div class="line">std::string s;</div><div class="line">BOOST_HANA_CONSTEXPR_LAMBDA <span class="keyword">auto</span> functions = hana::make_tuple(</div><div class="line">    [&amp;] { s += <span class="stringliteral">&quot;x&quot;</span>; },</div><div class="line">    [&amp;] { s += <span class="stringliteral">&quot;y&quot;</span>; },</div><div class="line">    [&amp;] { s += <span class="stringliteral">&quot;z&quot;</span>; }</div><div class="line">);</div><div class="line"><a class="code" href="group__group-Foldable.html#ga2af382f7e644ce3707710bbad313e9c2">hana::for_each</a>(functions, hana::int_&lt;5&gt;::times);</div><div class="line"><a class="code" href="group__group-assertions.html#ga29b2b21ffa5513e5b706c50ffee980af">BOOST_HANA_RUNTIME_CHECK</a>(s == <span class="stringliteral">&quot;xxxxxyyyyyzzzzz&quot;</span>);</div></div><!-- fragment --><p> Also, since static members can be accessed using both the <code>.</code> and the <code>::</code> syntax, one can take advantage of this (loophole?) to call <code>times</code> on objects just as well as on types: </p><div class="fragment"><div class="line">std::string s;</div><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">char</span> c = <span class="charliteral">&#39;x&#39;</span>; c &lt;= <span class="charliteral">&#39;z&#39;</span>; ++c)</div><div class="line">    hana::int_c&lt;5&gt;.<a class="code" href="structboost_1_1hana_1_1integral__constant.html#a2d4bda4a9114a5e803a91def599fae76">times</a>([&amp;] { s += c; });</div><div class="line"></div><div class="line"><a class="code" href="group__group-assertions.html#ga29b2b21ffa5513e5b706c50ffee980af">BOOST_HANA_RUNTIME_CHECK</a>(s == <span class="stringliteral">&quot;xxxxxyyyyyzzzzz&quot;</span>);</div></div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd><code>times</code> is equivalent to the <code><a class="el" href="namespaceboost_1_1hana.html#a405f3dd84fc6f5003e64f8da104a1b54" title="Invokes a nullary function n times.Given an IntegralConstant n and a nullary function f...">hana::repeat</a></code> function, which works on an arbitrary <code><a class="el" href="structboost_1_1hana_1_1IntegralConstant.html" title="The IntegralConstant concept represents compile-time integral values. ">IntegralConstant</a></code>.</dd></dl>
1049 <p>Sometimes, it is also useful to know the index we're at inside the function. This can be achieved by using <code>times.with_index</code>: </p><div class="fragment"><div class="line">std::vector&lt;int&gt; v;</div><div class="line">hana::int_&lt;5&gt;::times.with_index([&amp;](<span class="keyword">auto</span> index) { v.push_back(index); });</div><div class="line"></div><div class="line"><a class="code" href="group__group-assertions.html#ga29b2b21ffa5513e5b706c50ffee980af">BOOST_HANA_RUNTIME_CHECK</a>(v == std::vector&lt;int&gt;{0, 1, 2, 3, 4});</div></div><!-- fragment --><p> Remember that <code>times</code> is a <em>function object</em>, and hence it can have subobjects. <code>with_index</code> is just a function object nested inside <code>times</code>, which allows for this nice little interface. Also note that the indices passed to the function are <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code>s; they are known at compile-time. Hence, we can do compile-time stuff with them, like indexing inside a tuple: </p><div class="fragment"><div class="line">constexpr <span class="keyword">auto</span> xs = hana::tuple_c&lt;int, 0, 1, 2&gt;;</div><div class="line">hana::int_&lt;3&gt;::times.with_index([xs](<span class="keyword">auto</span> index) {</div><div class="line">    <a class="code" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(xs[index] == index);</div><div class="line">});</div></div><!-- fragment --> <dl class="section note"><dt>Note</dt><dd><code>times.with_index(f)</code> guarantees that the calls to <code>f</code> will be done in order of ascending index. In other words, <code>f</code> will be called as <code>f(0)</code>, <code>f(1)</code>, <code>f(2)</code>, etc., but with <code><a class="el" href="structboost_1_1hana_1_1integral__constant.html" title="Compile-time value of an integral type. ">integral_constant</a></code>s instead of normal integers. Side effects can also be done in the function passed to <code>times</code> and <code>times.with_index</code>. </dd></dl>
1050
1051 </div>
1052 </div>
1053 </div><!-- contents -->
1054 </div><!-- doc-content -->
1055 <!--
1056 Copyright Louis Dionne 2013-2017
1057 Distributed under the Boost Software License, Version 1.0.
1058 (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
1059 -->
1060 <!-- boost-no-inspect -->
1061 <!-- HTML footer for doxygen 1.8.9.1-->
1062 <!-- start footer part -->
1063 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
1064   <ul>
1065     <li class="navelem"><a class="el" href="namespaceboost.html">boost</a></li><li class="navelem"><a class="el" href="namespaceboost_1_1hana.html">hana</a></li><li class="navelem"><a class="el" href="structboost_1_1hana_1_1integral__constant.html">integral_constant</a></li>
1066   </ul>
1067 </div>
1068 </body>
1069 </html>