Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / hana / doc / html / group__group-details.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: Details</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-details.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="#nested-classes">Classes</a> &#124;
126 <a href="#define-members">Macros</a> &#124;
127 <a href="#typedef-members">Typedefs</a>  </div>
128   <div class="headertitle">
129 <div class="title">Details</div>  </div>
130 </div><!--header-->
131 <div class="contents">
132 <a name="details" id="details"></a><h2 class="groupheader">Description</h2>
133 <p>Implementation details. Do not rely on anything here, even if it is documented. </p>
134 <table class="memberdecls">
135 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
136 Classes</h2></td></tr>
137 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1any__of.html">boost::hana::detail::any_of&lt; Predicate, T &gt;</a></td></tr>
138 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the <code>Predicate</code> is satisfied by any of the <code>T...</code>.  <a href="structboost_1_1hana_1_1detail_1_1any__of.html#details">More...</a><br /></td></tr>
139 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
140 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1array.html">boost::hana::detail::array&lt; T, Size &gt;</a></td></tr>
141 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A minimal <code><a class="el" href="structstd_1_1array.html" title="Adaptation of std::array for Hana. ">std::array</a></code> with better <code>constexpr</code> support.  <a href="structboost_1_1hana_1_1detail_1_1array.html#details">More...</a><br /></td></tr>
142 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
143 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1CanonicalConstant.html">boost::hana::detail::CanonicalConstant&lt; T &gt;</a></td></tr>
144 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tag representing a canonical <code>Constant</code>.  <a href="structboost_1_1hana_1_1detail_1_1CanonicalConstant.html#details">More...</a><br /></td></tr>
145 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
146 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1create.html">boost::hana::detail::create&lt; T &gt;</a></td></tr>
147 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implementation of the generic <code>std::make_xxx</code> pattern for arbitrary <code>xxx</code>s.  <a href="structboost_1_1hana_1_1detail_1_1create.html#details">More...</a><br /></td></tr>
148 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
149 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1decay.html">boost::hana::detail::decay&lt; T, U &gt;</a></td></tr>
150 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>std::decay</code>, except faster.  <a href="structboost_1_1hana_1_1detail_1_1decay.html#details">More...</a><br /></td></tr>
151 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
152 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1first__unsatisfied__index.html">boost::hana::detail::first_unsatisfied_index&lt; Pred &gt;</a></td></tr>
153 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the index of the first element which does not satisfy <code>Pred</code>, or <code>sizeof...(Xs)</code> if no such element exists.  <a href="structboost_1_1hana_1_1detail_1_1first__unsatisfied__index.html#details">More...</a><br /></td></tr>
154 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
155 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1has__duplicates.html">boost::hana::detail::has_duplicates&lt; T &gt;</a></td></tr>
156 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether any of the <code>T</code>s are duplicate w.r.t. <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>.  <a href="structboost_1_1hana_1_1detail_1_1has__duplicates.html#details">More...</a><br /></td></tr>
157 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
158 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1index__if.html">boost::hana::detail::index_if&lt; Pred, Ts, typename &gt;</a></td></tr>
159 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the index of the first element of the <code>pack&lt;&gt;</code> that satisfies the predicate, or the size of the pack if there is no such element.  <a href="structboost_1_1hana_1_1detail_1_1index__if.html#details">More...</a><br /></td></tr>
160 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
161 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1nested__by.html">boost::hana::detail::nested_by&lt; Algorithm &gt;</a></td></tr>
162 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides a <code>.by</code> static constexpr function object.  <a href="structboost_1_1hana_1_1detail_1_1nested__by.html#details">More...</a><br /></td></tr>
163 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
164 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1nested__than.html">boost::hana::detail::nested_than&lt; Algorithm &gt;</a></td></tr>
165 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides a <code>.than</code> static constexpr function object.  <a href="structboost_1_1hana_1_1detail_1_1nested__than.html#details">More...</a><br /></td></tr>
166 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
167 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1nested__to.html">boost::hana::detail::nested_to&lt; Algorithm &gt;</a></td></tr>
168 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides a <code>.to</code> static constexpr function object.  <a href="structboost_1_1hana_1_1detail_1_1nested__to.html#details">More...</a><br /></td></tr>
169 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
170 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1operators_1_1adl.html">boost::hana::detail::operators::adl&lt;... &gt;</a></td></tr>
171 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables <a href="http://en.cppreference.com/w/cpp/language/adl">ADL</a> in the <code>hana::detail::operators</code> namespace.  <a href="structboost_1_1hana_1_1detail_1_1operators_1_1adl.html#details">More...</a><br /></td></tr>
172 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
173 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1std__common__type.html">boost::hana::detail::std_common_type&lt; T, U, typename &gt;</a></td></tr>
174 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equivalent to <code>std::common_type</code>, except it is SFINAE-friendly and does not support custom specializations.  <a href="structboost_1_1hana_1_1detail_1_1std__common__type.html#details">More...</a><br /></td></tr>
175 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
176 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1hana_1_1detail_1_1type__at.html">boost::hana::detail::type_at&lt; n, T &gt;</a></td></tr>
177 <tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Classic MPL-style metafunction returning the nth element of a type parameter pack.  <a href="structboost_1_1hana_1_1detail_1_1type__at.html#details">More...</a><br /></td></tr>
178 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
179 </table><table class="memberdecls">
180 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
181 Macros</h2></td></tr>
182 <tr class="memitem:ga5de7a0132a80e37c73d544ece1e6dd4e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-details.html#ga5de7a0132a80e37c73d544ece1e6dd4e">BOOST_HANA_DISPATCH_IF</a>(IMPL, ...)&#160;&#160;&#160;IMPL</td></tr>
183 <tr class="memdesc:ga5de7a0132a80e37c73d544ece1e6dd4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch to the given implementation method only when a condition is satisfied.  <a href="#ga5de7a0132a80e37c73d544ece1e6dd4e">More...</a><br /></td></tr>
184 <tr class="separator:ga5de7a0132a80e37c73d544ece1e6dd4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
185 <tr class="memitem:ga62fe3327023c37706c827cc82624998b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-details.html#ga62fe3327023c37706c827cc82624998b">BOOST_HANA_PP_NARG</a>(...)&#160;&#160;&#160;BOOST_HANA_PP_NARG_IMPL(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,)</td></tr>
186 <tr class="memdesc:ga62fe3327023c37706c827cc82624998b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Macro expanding to the number of arguments it is passed.  <a href="#ga62fe3327023c37706c827cc82624998b">More...</a><br /></td></tr>
187 <tr class="separator:ga62fe3327023c37706c827cc82624998b"><td class="memSeparator" colspan="2">&#160;</td></tr>
188 <tr class="memitem:ga444e73a2fe13732b802a770b55b4a99c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga444e73a2fe13732b802a770b55b4a99c"></a>
189 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-details.html#ga444e73a2fe13732b802a770b55b4a99c">BOOST_HANA_PP_CONCAT</a>(x,  y)&#160;&#160;&#160;BOOST_HANA_PP_CONCAT_PRIMITIVE(x, y)</td></tr>
190 <tr class="memdesc:ga444e73a2fe13732b802a770b55b4a99c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands to the concatenation of its two arguments. <br /></td></tr>
191 <tr class="separator:ga444e73a2fe13732b802a770b55b4a99c"><td class="memSeparator" colspan="2">&#160;</td></tr>
192 <tr class="memitem:ga6b4ca5cb5cefc6cf77455d7d7ef6f381"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6b4ca5cb5cefc6cf77455d7d7ef6f381"></a>
193 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-details.html#ga6b4ca5cb5cefc6cf77455d7d7ef6f381">BOOST_HANA_PP_STRINGIZE</a>(...)&#160;&#160;&#160;BOOST_HANA_PP_STRINGIZE_PRIMITIVE(__VA_ARGS__)</td></tr>
194 <tr class="memdesc:ga6b4ca5cb5cefc6cf77455d7d7ef6f381"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands to the stringized version of its argument. <br /></td></tr>
195 <tr class="separator:ga6b4ca5cb5cefc6cf77455d7d7ef6f381"><td class="memSeparator" colspan="2">&#160;</td></tr>
196 <tr class="memitem:ga1be7a4bd805ffff2882fe54995dc41bd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-details.html#ga1be7a4bd805ffff2882fe54995dc41bd">BOOST_HANA_PP_BACK</a>(...)&#160;&#160;&#160;BOOST_HANA_PP_BACK_IMPL(<a class="el" href="group__group-details.html#ga62fe3327023c37706c827cc82624998b">BOOST_HANA_PP_NARG</a>(__VA_ARGS__), __VA_ARGS__)</td></tr>
197 <tr class="memdesc:ga1be7a4bd805ffff2882fe54995dc41bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands to its last argument.  <a href="#ga1be7a4bd805ffff2882fe54995dc41bd">More...</a><br /></td></tr>
198 <tr class="separator:ga1be7a4bd805ffff2882fe54995dc41bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
199 <tr class="memitem:gadcf0cf5cb650681b8cac90d94ce52d44"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-details.html#gadcf0cf5cb650681b8cac90d94ce52d44">BOOST_HANA_PP_DROP_BACK</a>(...)&#160;&#160;&#160;BOOST_HANA_PP_DROP_BACK_IMPL(<a class="el" href="group__group-details.html#ga62fe3327023c37706c827cc82624998b">BOOST_HANA_PP_NARG</a>(__VA_ARGS__), __VA_ARGS__)</td></tr>
200 <tr class="memdesc:gadcf0cf5cb650681b8cac90d94ce52d44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands to all of its arguments, except for the last one.  <a href="#gadcf0cf5cb650681b8cac90d94ce52d44">More...</a><br /></td></tr>
201 <tr class="separator:gadcf0cf5cb650681b8cac90d94ce52d44"><td class="memSeparator" colspan="2">&#160;</td></tr>
202 <tr class="memitem:gaf8319341c937c45415ae0eae8d656723"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf8319341c937c45415ae0eae8d656723"></a>
203 #define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-details.html#gaf8319341c937c45415ae0eae8d656723">BOOST_HANA_PP_FRONT</a>(...)&#160;&#160;&#160;BOOST_HANA_PP_FRONT_IMPL(__VA_ARGS__, )</td></tr>
204 <tr class="memdesc:gaf8319341c937c45415ae0eae8d656723"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands to its first argument. <br /></td></tr>
205 <tr class="separator:gaf8319341c937c45415ae0eae8d656723"><td class="memSeparator" colspan="2">&#160;</td></tr>
206 <tr class="memitem:ga4bd17b3ef62e1e275dfe485923fdf666"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-details.html#ga4bd17b3ef62e1e275dfe485923fdf666">BOOST_HANA_PP_DROP_FRONT</a>(e0, ...)&#160;&#160;&#160;__VA_ARGS__</td></tr>
207 <tr class="memdesc:ga4bd17b3ef62e1e275dfe485923fdf666"><td class="mdescLeft">&#160;</td><td class="mdescRight">Expands to all of its arguments, except for the first one.  <a href="#ga4bd17b3ef62e1e275dfe485923fdf666">More...</a><br /></td></tr>
208 <tr class="separator:ga4bd17b3ef62e1e275dfe485923fdf666"><td class="memSeparator" colspan="2">&#160;</td></tr>
209 </table><table class="memberdecls">
210 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
211 Typedefs</h2></td></tr>
212 <tr class="memitem:gae85b604ae6c7a386f0fc3631c561091b"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename... &gt; class Concept, typename T , typename U &gt; </td></tr>
213 <tr class="memitem:gae85b604ae6c7a386f0fc3631c561091b"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__group-details.html#gae85b604ae6c7a386f0fc3631c561091b">boost::hana::detail::has_common_embedding</a> = typename has_common_embedding_impl&lt; Concept, T, U &gt;::type</td></tr>
214 <tr class="memdesc:gae85b604ae6c7a386f0fc3631c561091b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether <code>T</code> and <code>U</code> both have an embedding into a common type.  <a href="group__group-details.html#gae85b604ae6c7a386f0fc3631c561091b">More...</a><br /></td></tr>
215 <tr class="separator:gae85b604ae6c7a386f0fc3631c561091b"><td class="memSeparator" colspan="2">&#160;</td></tr>
216 <tr class="memitem:ga9acac3c4609cff5f0957572744c61ec4"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename... &gt; class Concept, typename T , typename U &gt; </td></tr>
217 <tr class="memitem:ga9acac3c4609cff5f0957572744c61ec4"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__group-details.html#ga9acac3c4609cff5f0957572744c61ec4">boost::hana::detail::has_nontrivial_common_embedding</a> = typename has_nontrivial_common_embedding_impl&lt; Concept, T, U &gt;::type</td></tr>
218 <tr class="memdesc:ga9acac3c4609cff5f0957572744c61ec4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether <code>T</code> and <code>U</code> are distinct and both have an embedding into a common type.  <a href="group__group-details.html#ga9acac3c4609cff5f0957572744c61ec4">More...</a><br /></td></tr>
219 <tr class="separator:ga9acac3c4609cff5f0957572744c61ec4"><td class="memSeparator" colspan="2">&#160;</td></tr>
220 </table>
221 <h2 class="groupheader">Macro Definition Documentation</h2>
222 <a class="anchor" id="ga5de7a0132a80e37c73d544ece1e6dd4e"></a>
223 <div class="memitem">
224 <div class="memproto">
225       <table class="memname">
226         <tr>
227           <td class="memname">#define BOOST_HANA_DISPATCH_IF</td>
228           <td>(</td>
229           <td class="paramtype">&#160;</td>
230           <td class="paramname">IMPL, </td>
231         </tr>
232         <tr>
233           <td class="paramkey"></td>
234           <td></td>
235           <td class="paramtype">&#160;</td>
236           <td class="paramname"><em>...</em>&#160;</td>
237         </tr>
238         <tr>
239           <td></td>
240           <td>)</td>
241           <td></td><td>&#160;&#160;&#160;IMPL</td>
242         </tr>
243       </table>
244 </div><div class="memdoc">
245
246 <p><code>#include &lt;<a class="el" href="dispatch__if_8hpp.html">boost/hana/detail/dispatch_if.hpp</a>&gt;</code></p>
247
248 <p>Dispatch to the given implementation method only when a condition is satisfied. </p>
249 <p>If the condition is satisfied, this macro is equivalent to the type <code>IMPL</code>. Otherwise, it is equivalent to a type with a deleted static function named <code>apply</code>. When a tag-dispatching error happens, the condition should be false and the deleted static function <code>apply</code> will prevent the compiler from generating too much garbage.</p>
250 <dl class="section note"><dt>Note</dt><dd>When <code>BOOST_HANA_CONFIG_DISABLE_CONCEPT_CHECKS</code> is defined, the condition is always ignored and this macro expands to the implementation only.</dd></dl>
251 <dl class="section remark"><dt>Remarks</dt><dd>This must be implemented as a macro, because we don't want the condition to be evaluated at all when <code>BOOST_HANA_CONFIG_DISABLE_CONCEPT_CHECKS</code> is defined. </dd></dl>
252
253 </div>
254 </div>
255 <a class="anchor" id="ga62fe3327023c37706c827cc82624998b"></a>
256 <div class="memitem">
257 <div class="memproto">
258       <table class="memname">
259         <tr>
260           <td class="memname">#define BOOST_HANA_PP_NARG</td>
261           <td>(</td>
262           <td class="paramtype">&#160;</td>
263           <td class="paramname"><em>...</em></td><td>)</td>
264           <td>&#160;&#160;&#160;BOOST_HANA_PP_NARG_IMPL(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,)</td>
265         </tr>
266       </table>
267 </div><div class="memdoc">
268
269 <p><code>#include &lt;<a class="el" href="preprocessor_8hpp.html">boost/hana/detail/preprocessor.hpp</a>&gt;</code></p>
270
271 <p>Macro expanding to the number of arguments it is passed. </p>
272 <p>Specifically, <code>BOOST_HANA_PP_NARG(x1, ..., xn)</code> expands to <code>n</code>. It is undefined behavior if <code>n &gt; 64</code> or if <code>n == 0</code>. </p>
273
274 </div>
275 </div>
276 <a class="anchor" id="ga1be7a4bd805ffff2882fe54995dc41bd"></a>
277 <div class="memitem">
278 <div class="memproto">
279       <table class="memname">
280         <tr>
281           <td class="memname">#define BOOST_HANA_PP_BACK</td>
282           <td>(</td>
283           <td class="paramtype">&#160;</td>
284           <td class="paramname"><em>...</em></td><td>)</td>
285           <td>&#160;&#160;&#160;BOOST_HANA_PP_BACK_IMPL(<a class="el" href="group__group-details.html#ga62fe3327023c37706c827cc82624998b">BOOST_HANA_PP_NARG</a>(__VA_ARGS__), __VA_ARGS__)</td>
286         </tr>
287       </table>
288 </div><div class="memdoc">
289
290 <p><code>#include &lt;<a class="el" href="preprocessor_8hpp.html">boost/hana/detail/preprocessor.hpp</a>&gt;</code></p>
291
292 <p>Expands to its last argument. </p>
293 <p>This macro can be passed up to 20 arguments. </p>
294
295 </div>
296 </div>
297 <a class="anchor" id="gadcf0cf5cb650681b8cac90d94ce52d44"></a>
298 <div class="memitem">
299 <div class="memproto">
300       <table class="memname">
301         <tr>
302           <td class="memname">#define BOOST_HANA_PP_DROP_BACK</td>
303           <td>(</td>
304           <td class="paramtype">&#160;</td>
305           <td class="paramname"><em>...</em></td><td>)</td>
306           <td>&#160;&#160;&#160;BOOST_HANA_PP_DROP_BACK_IMPL(<a class="el" href="group__group-details.html#ga62fe3327023c37706c827cc82624998b">BOOST_HANA_PP_NARG</a>(__VA_ARGS__), __VA_ARGS__)</td>
307         </tr>
308       </table>
309 </div><div class="memdoc">
310
311 <p><code>#include &lt;<a class="el" href="preprocessor_8hpp.html">boost/hana/detail/preprocessor.hpp</a>&gt;</code></p>
312
313 <p>Expands to all of its arguments, except for the last one. </p>
314 <p>This macro can be given up to 20 arguments. </p>
315
316 </div>
317 </div>
318 <a class="anchor" id="ga4bd17b3ef62e1e275dfe485923fdf666"></a>
319 <div class="memitem">
320 <div class="memproto">
321       <table class="memname">
322         <tr>
323           <td class="memname">#define BOOST_HANA_PP_DROP_FRONT</td>
324           <td>(</td>
325           <td class="paramtype">&#160;</td>
326           <td class="paramname">e0, </td>
327         </tr>
328         <tr>
329           <td class="paramkey"></td>
330           <td></td>
331           <td class="paramtype">&#160;</td>
332           <td class="paramname"><em>...</em>&#160;</td>
333         </tr>
334         <tr>
335           <td></td>
336           <td>)</td>
337           <td></td><td>&#160;&#160;&#160;__VA_ARGS__</td>
338         </tr>
339       </table>
340 </div><div class="memdoc">
341
342 <p><code>#include &lt;<a class="el" href="preprocessor_8hpp.html">boost/hana/detail/preprocessor.hpp</a>&gt;</code></p>
343
344 <p>Expands to all of its arguments, except for the first one. </p>
345 <p>This macro may not be called with less than 2 arguments. </p>
346
347 </div>
348 </div>
349 <h2 class="groupheader">Typedef Documentation</h2>
350 <a class="anchor" id="gae85b604ae6c7a386f0fc3631c561091b"></a>
351 <div class="memitem">
352 <div class="memproto">
353 <div class="memtemplate">
354 template&lt;template&lt; typename... &gt; class Concept, typename T , typename U &gt; </div>
355       <table class="memname">
356         <tr>
357           <td class="memname">using <a class="el" href="group__group-details.html#gae85b604ae6c7a386f0fc3631c561091b">boost::hana::detail::has_common_embedding</a> = typedef typename has_common_embedding_impl&lt;Concept, T, U&gt;::type</td>
358         </tr>
359       </table>
360 </div><div class="memdoc">
361
362 <p><code>#include &lt;<a class="el" href="has__common__embedding_8hpp.html">boost/hana/detail/has_common_embedding.hpp</a>&gt;</code></p>
363
364 <p>Returns whether <code>T</code> and <code>U</code> both have an embedding into a common type. </p>
365 <p>If <code>T</code> and <code>U</code> do not have a common-type, this metafunction returns false. </p>
366
367 </div>
368 </div>
369 <a class="anchor" id="ga9acac3c4609cff5f0957572744c61ec4"></a>
370 <div class="memitem">
371 <div class="memproto">
372 <div class="memtemplate">
373 template&lt;template&lt; typename... &gt; class Concept, typename T , typename U &gt; </div>
374       <table class="memname">
375         <tr>
376           <td class="memname">using <a class="el" href="group__group-details.html#ga9acac3c4609cff5f0957572744c61ec4">boost::hana::detail::has_nontrivial_common_embedding</a> = typedef typename has_nontrivial_common_embedding_impl&lt;Concept, T, U&gt;::type</td>
377         </tr>
378       </table>
379 </div><div class="memdoc">
380
381 <p><code>#include &lt;<a class="el" href="has__common__embedding_8hpp.html">boost/hana/detail/has_common_embedding.hpp</a>&gt;</code></p>
382
383 <p>Returns whether <code>T</code> and <code>U</code> are distinct and both have an embedding into a common type. </p>
384 <p>If <code>T</code> and <code>U</code> do not have a common-type, this metafunction returns false. </p>
385
386 </div>
387 </div>
388 </div><!-- contents -->
389 </div><!-- doc-content -->
390 <!--
391 Copyright Louis Dionne 2013-2017
392 Distributed under the Boost Software License, Version 1.0.
393 (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
394 -->
395 <!-- boost-no-inspect -->
396 <!-- HTML footer for doxygen 1.8.9.1-->
397 <!-- start footer part -->
398 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
399   <ul>
400   </ul>
401 </div>
402 </body>
403 </html>