Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / hana / doc / html / group__group-assertions.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: Assertions</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('group__group-assertions.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="#define-members">Macros</a>  </div>
126   <div class="headertitle">
127 <div class="title">Assertions</div>  </div>
128 </div><!--header-->
129 <div class="contents">
130 <a name="details" id="details"></a><h2 class="groupheader">Description</h2>
131 <p>Macros to perform different kinds of assertions. </p>
132 <table class="memberdecls">
133 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
134 Macros</h2></td></tr>
135 <tr class="memitem:gae4eb14a3b31e44f433b080d9bc2d14fd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#gae4eb14a3b31e44f433b080d9bc2d14fd">BOOST_HANA_RUNTIME_ASSERT</a>(condition)&#160;&#160;&#160;unspecified</td></tr>
136 <tr class="memdesc:gae4eb14a3b31e44f433b080d9bc2d14fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands to a runtime assertion.  <a href="#gae4eb14a3b31e44f433b080d9bc2d14fd">More...</a><br /></td></tr>
137 <tr class="separator:gae4eb14a3b31e44f433b080d9bc2d14fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
138 <tr class="memitem:ga2e25bbdeefb0e5fbf45ffa9227ddb8d2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga2e25bbdeefb0e5fbf45ffa9227ddb8d2">BOOST_HANA_RUNTIME_ASSERT_MSG</a>(condition,  message)&#160;&#160;&#160;unspecified</td></tr>
139 <tr class="memdesc:ga2e25bbdeefb0e5fbf45ffa9227ddb8d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_RUNTIME_ASSERT</code>, but allows providing a custom failure message.  <a href="#ga2e25bbdeefb0e5fbf45ffa9227ddb8d2">More...</a><br /></td></tr>
140 <tr class="separator:ga2e25bbdeefb0e5fbf45ffa9227ddb8d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
141 <tr class="memitem:ga2626fa0c92b308cee62ac423ae2dba41"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga2626fa0c92b308cee62ac423ae2dba41">BOOST_HANA_CONSTANT_ASSERT</a>(condition)&#160;&#160;&#160;unspecified</td></tr>
142 <tr class="memdesc:ga2626fa0c92b308cee62ac423ae2dba41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compile-time assertion for <code>Constant</code>s.  <a href="#ga2626fa0c92b308cee62ac423ae2dba41">More...</a><br /></td></tr>
143 <tr class="separator:ga2626fa0c92b308cee62ac423ae2dba41"><td class="memSeparator" colspan="2">&#160;</td></tr>
144 <tr class="memitem:ga9961218055c571b279bb6e07befbba4d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga9961218055c571b279bb6e07befbba4d">BOOST_HANA_CONSTANT_ASSERT_MSG</a>(condition,  message)&#160;&#160;&#160;unspecified</td></tr>
145 <tr class="memdesc:ga9961218055c571b279bb6e07befbba4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_CONSTANT_ASSERT</code>, but allows providing a custom failure message.  <a href="#ga9961218055c571b279bb6e07befbba4d">More...</a><br /></td></tr>
146 <tr class="separator:ga9961218055c571b279bb6e07befbba4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
147 <tr class="memitem:ga90c1df2cb8eb67e8e0c822eac180b7bc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga90c1df2cb8eb67e8e0c822eac180b7bc">BOOST_HANA_ASSERT</a>(condition)&#160;&#160;&#160;unspecified</td></tr>
148 <tr class="memdesc:ga90c1df2cb8eb67e8e0c822eac180b7bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands to the strongest form of assertion possible for the given condition.  <a href="#ga90c1df2cb8eb67e8e0c822eac180b7bc">More...</a><br /></td></tr>
149 <tr class="separator:ga90c1df2cb8eb67e8e0c822eac180b7bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
150 <tr class="memitem:gaa7690973ea7b2ba5b6a72a6293fce873"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#gaa7690973ea7b2ba5b6a72a6293fce873">BOOST_HANA_ASSERT_MSG</a>(condition,  message)&#160;&#160;&#160;unspecified</td></tr>
151 <tr class="memdesc:gaa7690973ea7b2ba5b6a72a6293fce873"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_ASSERT</code>, but allows providing a custom failure message.  <a href="#gaa7690973ea7b2ba5b6a72a6293fce873">More...</a><br /></td></tr>
152 <tr class="separator:gaa7690973ea7b2ba5b6a72a6293fce873"><td class="memSeparator" colspan="2">&#160;</td></tr>
153 <tr class="memitem:ga046d7ee458de8da63812fe2f059c0a4d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga046d7ee458de8da63812fe2f059c0a4d">BOOST_HANA_CONSTEXPR_ASSERT</a>(condition)&#160;&#160;&#160;unspecified</td></tr>
154 <tr class="memdesc:ga046d7ee458de8da63812fe2f059c0a4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands to a static assertion or a runtime assertion, depending on whether <code>constexpr</code> lambdas are supported.  <a href="#ga046d7ee458de8da63812fe2f059c0a4d">More...</a><br /></td></tr>
155 <tr class="separator:ga046d7ee458de8da63812fe2f059c0a4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
156 <tr class="memitem:ga0a1327b758604bf330efeba450dd4a95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0a1327b758604bf330efeba450dd4a95"></a>
157 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga0a1327b758604bf330efeba450dd4a95">BOOST_HANA_CONSTEXPR_ASSERT_MSG</a>(condition,  message)&#160;&#160;&#160;unspecified</td></tr>
158 <tr class="memdesc:ga0a1327b758604bf330efeba450dd4a95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_CONSTEXPR_ASSERT</code>, but allows providing a custom failure message. <br /></td></tr>
159 <tr class="separator:ga0a1327b758604bf330efeba450dd4a95"><td class="memSeparator" colspan="2">&#160;</td></tr>
160 <tr class="memitem:ga1cd7a2be93e2bf4e9a18c7043276373e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1cd7a2be93e2bf4e9a18c7043276373e"></a>
161 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga1cd7a2be93e2bf4e9a18c7043276373e">BOOST_HANA_RUNTIME_CHECK_MSG</a>(condition,  message)                              </td></tr>
162 <tr class="memdesc:ga1cd7a2be93e2bf4e9a18c7043276373e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_RUNTIME_ASSERT_MSG</code>, but not influenced by the <code>BOOST_HANA_CONFIG_DISABLE_ASSERTIONS</code> config macro. For internal use only. <br /></td></tr>
163 <tr class="separator:ga1cd7a2be93e2bf4e9a18c7043276373e"><td class="memSeparator" colspan="2">&#160;</td></tr>
164 <tr class="memitem:ga29b2b21ffa5513e5b706c50ffee980af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga29b2b21ffa5513e5b706c50ffee980af"></a>
165 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga29b2b21ffa5513e5b706c50ffee980af">BOOST_HANA_RUNTIME_CHECK</a>(...)                                                                    </td></tr>
166 <tr class="memdesc:ga29b2b21ffa5513e5b706c50ffee980af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_RUNTIME_ASSERT</code>, but not influenced by the <code>BOOST_HANA_CONFIG_DISABLE_ASSERTIONS</code> config macro. For internal use only. <br /></td></tr>
167 <tr class="separator:ga29b2b21ffa5513e5b706c50ffee980af"><td class="memSeparator" colspan="2">&#160;</td></tr>
168 <tr class="memitem:ga41a7490fd94005e6b6a3b6a900207063"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga41a7490fd94005e6b6a3b6a900207063"></a>
169 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga41a7490fd94005e6b6a3b6a900207063">BOOST_HANA_CONSTANT_CHECK_MSG</a>(condition,  message)                            </td></tr>
170 <tr class="memdesc:ga41a7490fd94005e6b6a3b6a900207063"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_CONSTANT_ASSERT_MSG</code>, but not influenced by the <code>BOOST_HANA_CONFIG_DISABLE_ASSERTIONS</code> config macro. For internal use only. <br /></td></tr>
171 <tr class="separator:ga41a7490fd94005e6b6a3b6a900207063"><td class="memSeparator" colspan="2">&#160;</td></tr>
172 <tr class="memitem:ga4bf9e0c46c44e21fbe5c5fbb3ace8356"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4bf9e0c46c44e21fbe5c5fbb3ace8356"></a>
173 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356">BOOST_HANA_CONSTANT_CHECK</a>(...)                                                                  </td></tr>
174 <tr class="memdesc:ga4bf9e0c46c44e21fbe5c5fbb3ace8356"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_CONSTANT_ASSERT</code>, but not influenced by the <code>BOOST_HANA_CONFIG_DISABLE_ASSERTIONS</code> config macro. For internal use only. <br /></td></tr>
175 <tr class="separator:ga4bf9e0c46c44e21fbe5c5fbb3ace8356"><td class="memSeparator" colspan="2">&#160;</td></tr>
176 <tr class="memitem:ga7af67ae500a237fe350f1bfceb4a5afa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7af67ae500a237fe350f1bfceb4a5afa"></a>
177 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga7af67ae500a237fe350f1bfceb4a5afa">BOOST_HANA_CHECK_MSG</a>(condition,  message)                                              </td></tr>
178 <tr class="memdesc:ga7af67ae500a237fe350f1bfceb4a5afa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_ASSERT_MSG</code>, but not influenced by the <code>BOOST_HANA_CONFIG_DISABLE_ASSERTIONS</code> config macro. For internal use only. <br /></td></tr>
179 <tr class="separator:ga7af67ae500a237fe350f1bfceb4a5afa"><td class="memSeparator" colspan="2">&#160;</td></tr>
180 <tr class="memitem:ga512de1fcd31e8a34931ffb2c891afd36"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga512de1fcd31e8a34931ffb2c891afd36"></a>
181 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga512de1fcd31e8a34931ffb2c891afd36">BOOST_HANA_CHECK</a>(...)                                                                                    </td></tr>
182 <tr class="memdesc:ga512de1fcd31e8a34931ffb2c891afd36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA__ASSERT</code>, but not influenced by the <code>BOOST_HANA_CONFIG_DISABLE_ASSERTIONS</code> config macro. For internal use only. <br /></td></tr>
183 <tr class="separator:ga512de1fcd31e8a34931ffb2c891afd36"><td class="memSeparator" colspan="2">&#160;</td></tr>
184 <tr class="memitem:gaa76ba567944adfec0dce60cc20be35bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa76ba567944adfec0dce60cc20be35bc"></a>
185 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#gaa76ba567944adfec0dce60cc20be35bc">BOOST_HANA_CONSTEXPR_CHECK_MSG</a>(condition,  message)                          &#160;&#160;&#160;<a class="el" href="group__group-assertions.html#ga1cd7a2be93e2bf4e9a18c7043276373e">BOOST_HANA_RUNTIME_CHECK_MSG</a>(condition, message)                    \</td></tr>
186 <tr class="memdesc:gaa76ba567944adfec0dce60cc20be35bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_CONSTEXPR_ASSERT_MSG</code>, but not influenced by the <code>BOOST_HANA_CONFIG_DISABLE_ASSERTIONS</code> config macro. For internal use only. <br /></td></tr>
187 <tr class="separator:gaa76ba567944adfec0dce60cc20be35bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
188 <tr class="memitem:ga5150cd7df438a22056a39529d21562d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5150cd7df438a22056a39529d21562d2"></a>
189 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-assertions.html#ga5150cd7df438a22056a39529d21562d2">BOOST_HANA_CONSTEXPR_CHECK</a>(...)                                                                </td></tr>
190 <tr class="memdesc:ga5150cd7df438a22056a39529d21562d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>BOOST_HANA_CONSTEXPR_ASSERT</code>, but not influenced by the <code>BOOST_HANA_CONFIG_DISABLE_ASSERTIONS</code> config macro. For internal use only. <br /></td></tr>
191 <tr class="separator:ga5150cd7df438a22056a39529d21562d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
192 </table>
193 <h2 class="groupheader">Macro Definition Documentation</h2>
194 <a class="anchor" id="gae4eb14a3b31e44f433b080d9bc2d14fd"></a>
195 <div class="memitem">
196 <div class="memproto">
197       <table class="memname">
198         <tr>
199           <td class="memname">#define BOOST_HANA_RUNTIME_ASSERT</td>
200           <td>(</td>
201           <td class="paramtype">&#160;</td>
202           <td class="paramname">condition</td><td>)</td>
203           <td>&#160;&#160;&#160;unspecified</td>
204         </tr>
205       </table>
206 </div><div class="memdoc">
207
208 <p><code>#include &lt;<a class="el" href="assert_8hpp.html">boost/hana/assert.hpp</a>&gt;</code></p>
209
210 <p>Expands to a runtime assertion. </p>
211 <p>Given a condition known at runtime, this macro expands to a runtime assertion similar to the <code>assert</code> macro. The provided condition must be explicitly convertible to a <code>bool</code>, and it must not be a model of the <code>Constant</code> concept. If the condition is a <code>Constant</code>, a static assertion will be triggered, asking you to use the <code>BOOST_HANA_CONSTANT_ASSERT</code> macro instead.</p>
212 <dl class="section note"><dt>Note</dt><dd>This macro may only be used at function scope. </dd></dl>
213
214 </div>
215 </div>
216 <a class="anchor" id="ga2e25bbdeefb0e5fbf45ffa9227ddb8d2"></a>
217 <div class="memitem">
218 <div class="memproto">
219       <table class="memname">
220         <tr>
221           <td class="memname">#define BOOST_HANA_RUNTIME_ASSERT_MSG</td>
222           <td>(</td>
223           <td class="paramtype">&#160;</td>
224           <td class="paramname">condition, </td>
225         </tr>
226         <tr>
227           <td class="paramkey"></td>
228           <td></td>
229           <td class="paramtype">&#160;</td>
230           <td class="paramname">message&#160;</td>
231         </tr>
232         <tr>
233           <td></td>
234           <td>)</td>
235           <td></td><td>&#160;&#160;&#160;unspecified</td>
236         </tr>
237       </table>
238 </div><div class="memdoc">
239
240 <p><code>#include &lt;<a class="el" href="assert_8hpp.html">boost/hana/assert.hpp</a>&gt;</code></p>
241
242 <p>Equivalent to <code>BOOST_HANA_RUNTIME_ASSERT</code>, but allows providing a custom failure message. </p>
243 <dl class="section warning"><dt>Warning</dt><dd>Conditions that contain multiple comma-separated elements should be parenthesized. </dd></dl>
244
245 </div>
246 </div>
247 <a class="anchor" id="ga2626fa0c92b308cee62ac423ae2dba41"></a>
248 <div class="memitem">
249 <div class="memproto">
250       <table class="memname">
251         <tr>
252           <td class="memname">#define BOOST_HANA_CONSTANT_ASSERT</td>
253           <td>(</td>
254           <td class="paramtype">&#160;</td>
255           <td class="paramname">condition</td><td>)</td>
256           <td>&#160;&#160;&#160;unspecified</td>
257         </tr>
258       </table>
259 </div><div class="memdoc">
260
261 <p><code>#include &lt;<a class="el" href="assert_8hpp.html">boost/hana/assert.hpp</a>&gt;</code></p>
262
263 <p>Compile-time assertion for <code>Constant</code>s. </p>
264 <p>Given a condition known at compile-time in the form of a <code>Constant</code>, this macro expands to a compile-time assertion similar to a <code>static_assert</code>. The provided condition must be a model of the <code>Constant</code> concept, in which case its value is retrieved using <code>hana::value</code> and then converted to a <code>bool</code>. If the condition is not a <code>Constant</code>, a static assertion will be triggered, asking you to use the <code>BOOST_HANA_RUNTIME_ASSERT</code> macro instead.</p>
265 <p>This macro may be used at global/namespace scope and function scope only; it may not be used at class scope. Note that the condition may never be evaluated at runtime. Hence, any side effect may not take place (but you shouldn't rely on side effects inside assertions anyway). </p>
266
267 </div>
268 </div>
269 <a class="anchor" id="ga9961218055c571b279bb6e07befbba4d"></a>
270 <div class="memitem">
271 <div class="memproto">
272       <table class="memname">
273         <tr>
274           <td class="memname">#define BOOST_HANA_CONSTANT_ASSERT_MSG</td>
275           <td>(</td>
276           <td class="paramtype">&#160;</td>
277           <td class="paramname">condition, </td>
278         </tr>
279         <tr>
280           <td class="paramkey"></td>
281           <td></td>
282           <td class="paramtype">&#160;</td>
283           <td class="paramname">message&#160;</td>
284         </tr>
285         <tr>
286           <td></td>
287           <td>)</td>
288           <td></td><td>&#160;&#160;&#160;unspecified</td>
289         </tr>
290       </table>
291 </div><div class="memdoc">
292
293 <p><code>#include &lt;<a class="el" href="assert_8hpp.html">boost/hana/assert.hpp</a>&gt;</code></p>
294
295 <p>Equivalent to <code>BOOST_HANA_CONSTANT_ASSERT</code>, but allows providing a custom failure message. </p>
296 <dl class="section warning"><dt>Warning</dt><dd>Conditions that contain multiple comma-separated elements should be parenthesized. </dd></dl>
297
298 </div>
299 </div>
300 <a class="anchor" id="ga90c1df2cb8eb67e8e0c822eac180b7bc"></a>
301 <div class="memitem">
302 <div class="memproto">
303       <table class="memname">
304         <tr>
305           <td class="memname">#define BOOST_HANA_ASSERT</td>
306           <td>(</td>
307           <td class="paramtype">&#160;</td>
308           <td class="paramname">condition</td><td>)</td>
309           <td>&#160;&#160;&#160;unspecified</td>
310         </tr>
311       </table>
312 </div><div class="memdoc">
313
314 <p><code>#include &lt;<a class="el" href="assert_8hpp.html">boost/hana/assert.hpp</a>&gt;</code></p>
315
316 <p>Expands to the strongest form of assertion possible for the given condition. </p>
317 <p>Given a condition, <code>BOOST_HANA_ASSERT</code> expands either to a compile-time or to a runtime assertion, depending on whether the value of the condition is known at compile-time or at runtime. Compile-time assertions are always preferred over runtime assertions. If the condition is a model of the <code>Constant</code> concept, its value (retrievable with <code>hana::value</code>) is assumed to be explicitly convertible to <code>bool</code>, and a compile-time assertion is performed on it. Otherwise, the condition itself is assumed to be explicitly convertible to <code>bool</code>, and a runtime assertion is performed on it.</p>
318 <p>If the assertion can be carried out at compile-time, the condition is not guaranteed to be evaluated at runtime at all (but it may). Hence, in general, you shouldn't rely on side effects that take place inside an assertion.</p>
319 <dl class="section note"><dt>Note</dt><dd>This macro may only be used at function scope. </dd></dl>
320
321 </div>
322 </div>
323 <a class="anchor" id="gaa7690973ea7b2ba5b6a72a6293fce873"></a>
324 <div class="memitem">
325 <div class="memproto">
326       <table class="memname">
327         <tr>
328           <td class="memname">#define BOOST_HANA_ASSERT_MSG</td>
329           <td>(</td>
330           <td class="paramtype">&#160;</td>
331           <td class="paramname">condition, </td>
332         </tr>
333         <tr>
334           <td class="paramkey"></td>
335           <td></td>
336           <td class="paramtype">&#160;</td>
337           <td class="paramname">message&#160;</td>
338         </tr>
339         <tr>
340           <td></td>
341           <td>)</td>
342           <td></td><td>&#160;&#160;&#160;unspecified</td>
343         </tr>
344       </table>
345 </div><div class="memdoc">
346
347 <p><code>#include &lt;<a class="el" href="assert_8hpp.html">boost/hana/assert.hpp</a>&gt;</code></p>
348
349 <p>Equivalent to <code>BOOST_HANA_ASSERT</code>, but allows providing a custom failure message. </p>
350 <dl class="section warning"><dt>Warning</dt><dd>Conditions that contain multiple comma-separated elements should be parenthesized. </dd></dl>
351
352 </div>
353 </div>
354 <a class="anchor" id="ga046d7ee458de8da63812fe2f059c0a4d"></a>
355 <div class="memitem">
356 <div class="memproto">
357       <table class="memname">
358         <tr>
359           <td class="memname">#define BOOST_HANA_CONSTEXPR_ASSERT</td>
360           <td>(</td>
361           <td class="paramtype">&#160;</td>
362           <td class="paramname">condition</td><td>)</td>
363           <td>&#160;&#160;&#160;unspecified</td>
364         </tr>
365       </table>
366 </div><div class="memdoc">
367
368 <p><code>#include &lt;<a class="el" href="assert_8hpp.html">boost/hana/assert.hpp</a>&gt;</code></p>
369
370 <p>Expands to a static assertion or a runtime assertion, depending on whether <code>constexpr</code> lambdas are supported. </p>
371 <p>This macro is used to assert on a condition that would be a constant expression if constexpr lambdas were supported. Right now, constexpr lambdas are not supported, and this is always a runtime assertion. Specifically, this is equivalent to <code>BOOST_HANA_RUNTIME_ASSERT</code>. </p>
372
373 </div>
374 </div>
375 </div><!-- contents -->
376 </div><!-- doc-content -->
377 <!--
378 Copyright Louis Dionne 2013-2017
379 Distributed under the Boost Software License, Version 1.0.
380 (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
381 -->
382 <!-- boost-no-inspect -->
383 <!-- HTML footer for doxygen 1.8.9.1-->
384 <!-- start footer part -->
385 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
386   <ul>
387   </ul>
388 </div>
389 </body>
390 </html>