771 changes: 386 additions & 385 deletions files.html

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions globals.html
Expand Up @@ -140,6 +140,9 @@ <h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
<li>BOOST_HANA_CONFIG_DISABLE_CONCEPT_CHECKS
: <a class="el" href="group__group-config.html#gad2b44f7cf8a6ba1002437a1a89e62acd">config.hpp</a>
</li>
<li>BOOST_HANA_CONFIG_ENABLE_DEBUG_MODE
: <a class="el" href="group__group-config.html#ga95603295cd6cc840c0dbc50b75e02ee9">config.hpp</a>
</li>
<li>BOOST_HANA_CONFIG_ENABLE_STRING_UDL
: <a class="el" href="group__group-config.html#ga81de60f5bea16e6ff4a38c94e3022f10">config.hpp</a>
</li>
Expand Down
3 changes: 3 additions & 0 deletions globals_defs.html
Expand Up @@ -140,6 +140,9 @@ <h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
<li>BOOST_HANA_CONFIG_DISABLE_CONCEPT_CHECKS
: <a class="el" href="group__group-config.html#gad2b44f7cf8a6ba1002437a1a89e62acd">config.hpp</a>
</li>
<li>BOOST_HANA_CONFIG_ENABLE_DEBUG_MODE
: <a class="el" href="group__group-config.html#ga95603295cd6cc840c0dbc50b75e02ee9">config.hpp</a>
</li>
<li>BOOST_HANA_CONFIG_ENABLE_STRING_UDL
: <a class="el" href="group__group-config.html#ga81de60f5bea16e6ff4a38c94e3022f10">config.hpp</a>
</li>
Expand Down
20 changes: 20 additions & 0 deletions group__group-config.html
Expand Up @@ -139,6 +139,9 @@
<tr class="memitem:ga81de60f5bea16e6ff4a38c94e3022f10"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-config.html#ga81de60f5bea16e6ff4a38c94e3022f10">BOOST_HANA_CONFIG_ENABLE_STRING_UDL</a></td></tr>
<tr class="memdesc:ga81de60f5bea16e6ff4a38c94e3022f10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables usage of the "string literal operator template" GNU extension. <a href="#ga81de60f5bea16e6ff4a38c94e3022f10">More...</a><br /></td></tr>
<tr class="separator:ga81de60f5bea16e6ff4a38c94e3022f10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga95603295cd6cc840c0dbc50b75e02ee9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-config.html#ga95603295cd6cc840c0dbc50b75e02ee9">BOOST_HANA_CONFIG_ENABLE_DEBUG_MODE</a></td></tr>
<tr class="memdesc:ga95603295cd6cc840c0dbc50b75e02ee9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables additional assertions and sanity checks to be done by Hana. <a href="#ga95603295cd6cc840c0dbc50b75e02ee9">More...</a><br /></td></tr>
<tr class="separator:ga95603295cd6cc840c0dbc50b75e02ee9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac1f8e58978bf4fe02f68ca4646124aee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac1f8e58978bf4fe02f68ca4646124aee"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group-config.html#gac1f8e58978bf4fe02f68ca4646124aee">BOOST_HANA_MAJOR_VERSION</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:gac1f8e58978bf4fe02f68ca4646124aee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Macro expanding to the major version of the library, i.e. the <code>x</code> in <code>x.y.z</code>. <br /></td></tr>
Expand Down Expand Up @@ -207,6 +210,23 @@ <h2 class="groupheader">Macro Definition Documentation</h2>
<p>That operator is not part of the language yet, but it is supported by both Clang and GCC. This operator allows Hana to provide the nice <code>_s</code> user-defined literal for creating compile-time strings.</p>
<p>When this macro is not defined, the GNU extension will be not used by Hana. Because this is a non-standard extension, the macro is not defined by default. </p>

</div>
</div>
<a class="anchor" id="ga95603295cd6cc840c0dbc50b75e02ee9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BOOST_HANA_CONFIG_ENABLE_DEBUG_MODE</td>
</tr>
</table>
</div><div class="memdoc">

<p><code>#include &lt;<a class="el" href="config_8hpp.html">boost/hana/config.hpp</a>&gt;</code></p>

<p>Enables additional assertions and sanity checks to be done by Hana. </p>
<p>When this macro is defined (it is <b>not defined</b> by default), additional sanity checks may be done by Hana. These checks may be costly to perform, either in terms of compilation time or in terms of execution time. These checks may help debugging an application during its initial development, but they should not be enabled as part of the normal configuration. </p>

</div>
</div>
<a class="anchor" id="ga2fb384037c12a706e1a1cac053065648"></a>
Expand Down
1 change: 1 addition & 0 deletions group__group-config.js
Expand Up @@ -3,6 +3,7 @@ var group__group_config =
[ "BOOST_HANA_CONFIG_DISABLE_ASSERTIONS", "group__group-config.html#ga08dcc32bef198420e646244e851d1995", null ],
[ "BOOST_HANA_CONFIG_DISABLE_CONCEPT_CHECKS", "group__group-config.html#gad2b44f7cf8a6ba1002437a1a89e62acd", null ],
[ "BOOST_HANA_CONFIG_ENABLE_STRING_UDL", "group__group-config.html#ga81de60f5bea16e6ff4a38c94e3022f10", null ],
[ "BOOST_HANA_CONFIG_ENABLE_DEBUG_MODE", "group__group-config.html#ga95603295cd6cc840c0dbc50b75e02ee9", null ],
[ "BOOST_HANA_MAJOR_VERSION", "group__group-config.html#gac1f8e58978bf4fe02f68ca4646124aee", null ],
[ "BOOST_HANA_MINOR_VERSION", "group__group-config.html#gafd6a702442b280083efe2690da5621bd", null ],
[ "BOOST_HANA_PATCH_VERSION", "group__group-config.html#ga50940f9267eacd0da0d4d8ccbfac8817", null ],
Expand Down
3 changes: 3 additions & 0 deletions group__group-details.html
Expand Up @@ -147,6 +147,9 @@
<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>
<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>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>hana::equal</code>. <a href="structboost_1_1hana_1_1detail_1_1has__duplicates.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<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>
<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>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
Expand Down
1 change: 1 addition & 0 deletions group__group-details.js
Expand Up @@ -5,6 +5,7 @@ var group__group_details =
[ "create", "structboost_1_1hana_1_1detail_1_1create.html", null ],
[ "decay", "structboost_1_1hana_1_1detail_1_1decay.html", null ],
[ "first_unsatisfied_index", "structboost_1_1hana_1_1detail_1_1first__unsatisfied__index.html", null ],
[ "has_duplicates", "structboost_1_1hana_1_1detail_1_1has__duplicates.html", null ],
[ "index_if", "structboost_1_1hana_1_1detail_1_1index__if.html", null ],
[ "nested_by", "structboost_1_1hana_1_1detail_1_1nested__by.html", null ],
[ "nested_than", "structboost_1_1hana_1_1detail_1_1nested__than.html", null ],
Expand Down
162 changes: 162 additions & 0 deletions has__duplicates_8hpp.html
@@ -0,0 +1,162 @@
<!--
Copyright Louis Dionne 2013-2016
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-->
<!-- HTML header for doxygen 1.8.9.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>Boost.Hana: boost/hana/detail/has_duplicates.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
MathJax.Hub.Config({
"HTML-CSS": {
linebreaks: {
automatic: true,
width: "75% container"
}
}
});
</script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<!-- Additional javascript for drawing charts. -->
<script type="text/javascript" src="https://code.highcharts.com/highcharts.js"></script>
<script type="text/javascript" src="https://code.highcharts.com/modules/data.js"></script>
<script type="text/javascript" src="https://code.highcharts.com/modules/exporting.js"></script>
<script type="text/javascript" src="chart.js"></script>
<script type="text/javascript" src="hana.js"></script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="Boost.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Hana
</div>
<div id="projectbrief">Your standard library for metaprogramming</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('has__duplicates_8hpp.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">has_duplicates.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">

<p>Defines <code><a class="el" href="structboost_1_1hana_1_1detail_1_1has__duplicates.html" title="Returns whether any of the Ts are duplicate w.r.t. hana::equal. ">boost::hana::detail::has_duplicates</a></code>.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<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>
<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>hana::equal</code>. <a href="structboost_1_1hana_1_1detail_1_1has__duplicates.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceboost"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Defines <code><a class="el" href="structboost_1_1hana_1_1detail_1_1has__duplicates.html" title="Returns whether any of the Ts are duplicate w.r.t. hana::equal. ">boost::hana::detail::has_duplicates</a></code>. </p>
<dl class="section copyright"><dt>Copyright</dt><dd>Louis Dionne 2013-2016 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at <a href="http://boost.org/LICENSE_1_0.txt">http://boost.org/LICENSE_1_0.txt</a>) </dd></dl>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!--
Copyright Louis Dionne 2013-2016
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-->
<!-- HTML footer for doxygen 1.8.9.1-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_8ce16d73ad66b5255099a7f1f1b191b0.html">boost</a></li><li class="navelem"><a class="el" href="dir_ed38057d14095b522e8fe5662d50c8ac.html">hana</a></li><li class="navelem"><a class="el" href="dir_d7cfc6ccec3916ea65c6380145bcef37.html">detail</a></li><li class="navelem"><a class="el" href="has__duplicates_8hpp.html">has_duplicates.hpp</a></li>
</ul>
</div>
</body>
</html>
137 changes: 69 additions & 68 deletions hierarchy.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions index.html
Expand Up @@ -2210,7 +2210,7 @@ <h2><a class="anchor" id="tutorial-tutorial-appendix-constexpr-preservation"></a
<div class="line"><span class="keyword">auto</span> f(<span class="keywordtype">int</span> i) -&gt; foo&lt;i&gt;; <span class="comment">// obviously won&#39;t work</span></div>
</div><!-- fragment --><p>In fact, the return type of a function may only depend on the types of its arguments, and <code>constexpr</code> can't change this fact. This is of utmost importance to us, because we're interested in manipulating heterogeneous objects, which eventually means returning objects with different types depending on the argument of the function. For example, a function might want to return an object of type <code>T</code> in one case and an object of type <code>U</code> in the other; from our analysis, we now know that these "cases" will have to depend on information encoded in the <em>types</em> of the arguments, not in their <em>values</em>.</p>
<p>To preserve <code>constexpr</code>-ness through argument passing, we have to encode the <code>constexpr</code> value into a type, and then pass a not-necessarily-<code>constexpr</code> object of that type to the function. The function, which must be a template, may then access the <code>constexpr</code> value encoded inside that type.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000010">Todo:</a></b></dt><dd>Improve this explanation and talk about non-integral constant expressions wrapped into types.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000011">Todo:</a></b></dt><dd>Improve this explanation and talk about non-integral constant expressions wrapped into types.</dd></dl>
<h2><a class="anchor" id="tutorial-appendix-constexpr-effects"></a>
Side effects</h2>
<p>Let me ask a tricky question. Is the following code valid?</p>
Expand Down Expand Up @@ -2258,7 +2258,7 @@ <h2><a class="anchor" id="tutorial-appendix-constexpr-effects"></a>
<div class="line">note: read of non-<span class="keyword">const</span> variable <span class="charliteral">&#39;n&#39;</span> is not allowed <a class="code" href="structboost_1_1hana_1_1Searchable.html#a234e4ee0bd5e0e9e604d6140fde24074">in</a> a constant expression</div>
<div class="line">constexpr <span class="keywordtype">int</span> i = f(n);</div>
<div class="line"> ^</div>
</div><!-- fragment --><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000011">Todo:</a></b></dt><dd>Explain how side-effects may not appear inside constant expressions, even if the expression they yield are not accessed.</dd></dl>
</div><!-- fragment --><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000012">Todo:</a></b></dt><dd>Explain how side-effects may not appear inside constant expressions, even if the expression they yield are not accessed.</dd></dl>
<h1><a class="anchor" id="tutorial-appendix-MPL"></a>
Apendix II: A minimal MPL</h1>
<hr/>
Expand Down
4 changes: 2 additions & 2 deletions navtreedata.js
Expand Up @@ -102,8 +102,8 @@ var NAVTREEINDEX =
[
"accessors_8hpp.html",
"fwd_2front_8hpp.html",
"index.html#tutorial-introspection-is_valid-template",
"structboost_1_1hana_1_1Searchable.html#a386ac8af7123ea1e8ea1fa2bbd4cbf3d"
"index.html#tutorial-introspection-is_valid",
"structboost_1_1hana_1_1Searchable.html#a234e4ee0bd5e0e9e604d6140fde24074"
];

var SYNCONMSG = 'click to disable panel synchronisation';
Expand Down
58 changes: 29 additions & 29 deletions navtreeindex1.js
Expand Up @@ -114,12 +114,12 @@ var NAVTREEINDEX1 =
"group__group-assertions.html#ga41a7490fd94005e6b6a3b6a900207063":[1,7,10],
"group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356":[3,0,0,18,11],
"group__group-assertions.html#ga4bf9e0c46c44e21fbe5c5fbb3ace8356":[1,7,11],
"group__group-assertions.html#ga512de1fcd31e8a34931ffb2c891afd36":[3,0,0,18,13],
"group__group-assertions.html#ga512de1fcd31e8a34931ffb2c891afd36":[1,7,13],
"group__group-assertions.html#ga5150cd7df438a22056a39529d21562d2":[1,7,15],
"group__group-assertions.html#ga512de1fcd31e8a34931ffb2c891afd36":[3,0,0,18,13],
"group__group-assertions.html#ga5150cd7df438a22056a39529d21562d2":[3,0,0,18,15],
"group__group-assertions.html#ga7af67ae500a237fe350f1bfceb4a5afa":[1,7,12],
"group__group-assertions.html#ga5150cd7df438a22056a39529d21562d2":[1,7,15],
"group__group-assertions.html#ga7af67ae500a237fe350f1bfceb4a5afa":[3,0,0,18,12],
"group__group-assertions.html#ga7af67ae500a237fe350f1bfceb4a5afa":[1,7,12],
"group__group-assertions.html#ga90c1df2cb8eb67e8e0c822eac180b7bc":[3,0,0,18,4],
"group__group-assertions.html#ga90c1df2cb8eb67e8e0c822eac180b7bc":[1,7,4],
"group__group-assertions.html#ga9961218055c571b279bb6e07befbba4d":[3,0,0,18,3],
Expand All @@ -134,18 +134,20 @@ var NAVTREEINDEX1 =
"group__group-config.html":[1,6],
"group__group-config.html#ga08dcc32bef198420e646244e851d1995":[1,6,0],
"group__group-config.html#ga08dcc32bef198420e646244e851d1995":[3,0,0,29,0],
"group__group-config.html#ga2fb384037c12a706e1a1cac053065648":[1,6,6],
"group__group-config.html#ga2fb384037c12a706e1a1cac053065648":[1,6,7],
"group__group-config.html#ga2fb384037c12a706e1a1cac053065648":[3,0,0,148,4],
"group__group-config.html#ga50940f9267eacd0da0d4d8ccbfac8817":[1,6,5],
"group__group-config.html#ga50940f9267eacd0da0d4d8ccbfac8817":[1,6,6],
"group__group-config.html#ga50940f9267eacd0da0d4d8ccbfac8817":[3,0,0,148,3],
"group__group-config.html#ga81de60f5bea16e6ff4a38c94e3022f10":[1,6,2],
"group__group-config.html#ga81de60f5bea16e6ff4a38c94e3022f10":[3,0,0,29,2],
"group__group-config.html#gac1f8e58978bf4fe02f68ca4646124aee":[1,6,3],
"group__group-config.html#ga95603295cd6cc840c0dbc50b75e02ee9":[3,0,0,29,3],
"group__group-config.html#ga95603295cd6cc840c0dbc50b75e02ee9":[1,6,3],
"group__group-config.html#gac1f8e58978bf4fe02f68ca4646124aee":[1,6,4],
"group__group-config.html#gac1f8e58978bf4fe02f68ca4646124aee":[3,0,0,148,1],
"group__group-config.html#gad2b44f7cf8a6ba1002437a1a89e62acd":[3,0,0,29,1],
"group__group-config.html#gad2b44f7cf8a6ba1002437a1a89e62acd":[1,6,1],
"group__group-config.html#gafd6a702442b280083efe2690da5621bd":[1,6,4],
"group__group-config.html#gad2b44f7cf8a6ba1002437a1a89e62acd":[3,0,0,29,1],
"group__group-config.html#gafd6a702442b280083efe2690da5621bd":[3,0,0,148,2],
"group__group-config.html#gafd6a702442b280083efe2690da5621bd":[1,6,5],
"group__group-core.html":[1,3],
"group__group-core.html#ga0f5d717bbf6646619bb6219b104384dc":[1,3,11],
"group__group-core.html#ga1d92480f0af1029878e773dafa3e2f60":[1,3,15],
Expand All @@ -156,24 +158,24 @@ var NAVTREEINDEX1 =
"group__group-core.html#gadc70755c1d059139297814fb3bfeb91e":[1,3,12],
"group__group-datatypes.html":[1,1],
"group__group-details.html":[1,8],
"group__group-details.html#ga1be7a4bd805ffff2882fe54995dc41bd":[3,0,0,2,21,3],
"group__group-details.html#ga1be7a4bd805ffff2882fe54995dc41bd":[1,8,15],
"group__group-details.html#ga444e73a2fe13732b802a770b55b4a99c":[3,0,0,2,21,1],
"group__group-details.html#ga444e73a2fe13732b802a770b55b4a99c":[1,8,13],
"group__group-details.html#ga4bd17b3ef62e1e275dfe485923fdf666":[3,0,0,2,21,6],
"group__group-details.html#ga4bd17b3ef62e1e275dfe485923fdf666":[1,8,18],
"group__group-details.html#ga1be7a4bd805ffff2882fe54995dc41bd":[3,0,0,2,22,3],
"group__group-details.html#ga1be7a4bd805ffff2882fe54995dc41bd":[1,8,16],
"group__group-details.html#ga444e73a2fe13732b802a770b55b4a99c":[3,0,0,2,22,1],
"group__group-details.html#ga444e73a2fe13732b802a770b55b4a99c":[1,8,14],
"group__group-details.html#ga4bd17b3ef62e1e275dfe485923fdf666":[3,0,0,2,22,6],
"group__group-details.html#ga4bd17b3ef62e1e275dfe485923fdf666":[1,8,19],
"group__group-details.html#ga5de7a0132a80e37c73d544ece1e6dd4e":[3,0,0,2,9,0],
"group__group-details.html#ga5de7a0132a80e37c73d544ece1e6dd4e":[1,8,11],
"group__group-details.html#ga62fe3327023c37706c827cc82624998b":[3,0,0,2,21,0],
"group__group-details.html#ga62fe3327023c37706c827cc82624998b":[1,8,12],
"group__group-details.html#ga6b4ca5cb5cefc6cf77455d7d7ef6f381":[3,0,0,2,21,2],
"group__group-details.html#ga6b4ca5cb5cefc6cf77455d7d7ef6f381":[1,8,14],
"group__group-details.html#ga9acac3c4609cff5f0957572744c61ec4":[1,8,20],
"group__group-details.html#gadcf0cf5cb650681b8cac90d94ce52d44":[3,0,0,2,21,4],
"group__group-details.html#gadcf0cf5cb650681b8cac90d94ce52d44":[1,8,16],
"group__group-details.html#gae85b604ae6c7a386f0fc3631c561091b":[1,8,19],
"group__group-details.html#gaf8319341c937c45415ae0eae8d656723":[3,0,0,2,21,5],
"group__group-details.html#gaf8319341c937c45415ae0eae8d656723":[1,8,17],
"group__group-details.html#ga5de7a0132a80e37c73d544ece1e6dd4e":[1,8,12],
"group__group-details.html#ga62fe3327023c37706c827cc82624998b":[3,0,0,2,22,0],
"group__group-details.html#ga62fe3327023c37706c827cc82624998b":[1,8,13],
"group__group-details.html#ga6b4ca5cb5cefc6cf77455d7d7ef6f381":[3,0,0,2,22,2],
"group__group-details.html#ga6b4ca5cb5cefc6cf77455d7d7ef6f381":[1,8,15],
"group__group-details.html#ga9acac3c4609cff5f0957572744c61ec4":[1,8,21],
"group__group-details.html#gadcf0cf5cb650681b8cac90d94ce52d44":[3,0,0,2,22,4],
"group__group-details.html#gadcf0cf5cb650681b8cac90d94ce52d44":[1,8,17],
"group__group-details.html#gae85b604ae6c7a386f0fc3631c561091b":[1,8,20],
"group__group-details.html#gaf8319341c937c45415ae0eae8d656723":[3,0,0,2,22,5],
"group__group-details.html#gaf8319341c937c45415ae0eae8d656723":[1,8,18],
"group__group-experimental.html":[1,4],
"group__group-experimental.html#ga660c0769106006a86948b5b355fad050":[1,4,0],
"group__group-ext-boost.html":[1,5,2],
Expand Down Expand Up @@ -205,6 +207,7 @@ var NAVTREEINDEX1 =
"has__common__embedding_8hpp.html":[3,0,0,2,12],
"has__common__embedding_8hpp.html#ga9acac3c4609cff5f0957572744c61ec4":[3,0,0,2,12,1],
"has__common__embedding_8hpp.html#gae85b604ae6c7a386f0fc3631c561091b":[3,0,0,2,12,0],
"has__duplicates_8hpp.html":[3,0,0,2,13],
"id_8hpp.html":[3,0,0,4,9],
"id_8hpp.html#gaef38cf34324c8edbd3597ae71811d00d":[3,0,0,4,9,0],
"if_8hpp.html":[3,0,0,66],
Expand Down Expand Up @@ -246,8 +249,5 @@ var NAVTREEINDEX1 =
"index.html#tutorial-introduction":[0,3],
"index.html#tutorial-introduction-quadrants":[0,3,0],
"index.html#tutorial-introspection":[0,8],
"index.html#tutorial-introspection-adapting":[0,8,2],
"index.html#tutorial-introspection-is_valid":[0,8,0],
"index.html#tutorial-introspection-is_valid-non_static":[0,8,0,0],
"index.html#tutorial-introspection-is_valid-static":[0,8,0,1]
"index.html#tutorial-introspection-adapting":[0,8,2]
};
30 changes: 15 additions & 15 deletions navtreeindex2.js
@@ -1,5 +1,8 @@
var NAVTREEINDEX2 =
{
"index.html#tutorial-introspection-is_valid":[0,8,0],
"index.html#tutorial-introspection-is_valid-non_static":[0,8,0,0],
"index.html#tutorial-introspection-is_valid-static":[0,8,0,1],
"index.html#tutorial-introspection-is_valid-template":[0,8,0,3],
"index.html#tutorial-introspection-is_valid-typename":[0,8,0,2],
"index.html#tutorial-introspection-json":[0,8,3],
Expand Down Expand Up @@ -31,7 +34,7 @@ var NAVTREEINDEX2 =
"index.html#tutorial-type-lifting":[0,7,3],
"index.html#tutorial-type-objects":[0,7,0],
"index.html#tutorial-type-working":[0,7,2],
"index__if_8hpp.html":[3,0,0,2,13],
"index__if_8hpp.html":[3,0,0,2,14],
"infix_8hpp.html":[3,0,0,4,10],
"infix_8hpp.html#ga7bdafba6dc801f1d2d83731ad9714557":[3,0,0,4,10,0],
"insert_8hpp.html":[3,0,0,67],
Expand All @@ -41,7 +44,7 @@ var NAVTREEINDEX2 =
"integral__constant_8hpp.html":[3,0,0,69],
"intersection_8hpp.html":[3,0,0,70],
"intersperse_8hpp.html":[3,0,0,71],
"intrinsics_8hpp.html":[3,0,0,2,14],
"intrinsics_8hpp.html":[3,0,0,2,15],
"is__disjoint_8hpp.html":[3,0,0,72],
"is__empty_8hpp.html":[3,0,0,73],
"is__subset_8hpp.html":[3,0,0,74],
Expand Down Expand Up @@ -72,12 +75,12 @@ var NAVTREEINDEX2 =
"mpl_8hpp.html":[3,0,0,3,0,3],
"mult_8hpp.html":[3,0,0,93],
"negate_8hpp.html":[3,0,0,94],
"nested__by_8hpp.html":[3,0,0,2,15],
"nested__by__fwd_8hpp.html":[3,0,0,2,16],
"nested__than_8hpp.html":[3,0,0,2,17],
"nested__than__fwd_8hpp.html":[3,0,0,2,18],
"nested__to_8hpp.html":[3,0,0,2,19],
"nested__to__fwd_8hpp.html":[3,0,0,2,20],
"nested__by_8hpp.html":[3,0,0,2,16],
"nested__by__fwd_8hpp.html":[3,0,0,2,17],
"nested__than_8hpp.html":[3,0,0,2,18],
"nested__than__fwd_8hpp.html":[3,0,0,2,19],
"nested__to_8hpp.html":[3,0,0,2,20],
"nested__to__fwd_8hpp.html":[3,0,0,2,21],
"none_8hpp.html":[3,0,0,95],
"none__of_8hpp.html":[3,0,0,96],
"not_8hpp.html":[3,0,0,97],
Expand All @@ -104,7 +107,7 @@ var NAVTREEINDEX2 =
"power_8hpp.html":[3,0,0,107],
"prefix_8hpp.html":[3,0,0,108],
"prepend_8hpp.html":[3,0,0,109],
"preprocessor_8hpp.html":[3,0,0,2,21],
"preprocessor_8hpp.html":[3,0,0,2,22],
"product_8hpp.html":[3,0,0,110],
"range_8hpp.html":[3,0,0,111],
"ratio_8hpp.html":[3,0,0,3,1,4],
Expand Down Expand Up @@ -132,10 +135,10 @@ var NAVTREEINDEX2 =
"split__at_8hpp.html":[3,0,0,2,1,6],
"std_2vector_8hpp.html":[3,0,0,3,1,6],
"std_8hpp.html":[3,0,0,3,3],
"std__common__type_8hpp.html":[3,0,0,2,22],
"std__common__type_8hpp.html":[3,0,0,2,23],
"string_8hpp.html":[3,0,0,130],
"string_8hpp.html#a325859c7db2c3f8e6a4bfab5a81a6dcb":[3,0,0,130,0],
"struct__macros_8hpp.html":[3,0,0,2,23],
"struct__macros_8hpp.html":[3,0,0,2,24],
"structboost_1_1fusion_1_1deque.html":[1,5,0,0],
"structboost_1_1fusion_1_1list.html":[1,5,0,1],
"structboost_1_1fusion_1_1tuple.html":[1,5,0,2],
Expand Down Expand Up @@ -246,8 +249,5 @@ var NAVTREEINDEX2 =
"structboost_1_1hana_1_1Ring.html#aca4df2fde91ca9c046282c6ec0f9bc3d":[1,0,17,0],
"structboost_1_1hana_1_1Ring.html#af31c2ce5c41696358e7ee10a8b57340e":[1,0,17,2],
"structboost_1_1hana_1_1Searchable.html":[1,0,18],
"structboost_1_1hana_1_1Searchable.html#a1b4a67c4fd522de62b101ed99bb423e3":[1,0,18,5],
"structboost_1_1hana_1_1Searchable.html#a234e4ee0bd5e0e9e604d6140fde24074":[1,0,18,6],
"structboost_1_1hana_1_1Searchable.html#a2772d97163d2e2ca3f51b2d16d13ff66":[1,0,18,7],
"structboost_1_1hana_1_1Searchable.html#a2dc05dc4553467aa0a2235088de41b4b":[1,0,18,3]
"structboost_1_1hana_1_1Searchable.html#a1b4a67c4fd522de62b101ed99bb423e3":[1,0,18,5]
};
24 changes: 14 additions & 10 deletions navtreeindex3.js
@@ -1,5 +1,8 @@
var NAVTREEINDEX3 =
{
"structboost_1_1hana_1_1Searchable.html#a234e4ee0bd5e0e9e604d6140fde24074":[1,0,18,6],
"structboost_1_1hana_1_1Searchable.html#a2772d97163d2e2ca3f51b2d16d13ff66":[1,0,18,7],
"structboost_1_1hana_1_1Searchable.html#a2dc05dc4553467aa0a2235088de41b4b":[1,0,18,3],
"structboost_1_1hana_1_1Searchable.html#a386ac8af7123ea1e8ea1fa2bbd4cbf3d":[1,0,18,10],
"structboost_1_1hana_1_1Searchable.html#a67dd29f7921b76f7d2bd372605f73f7c":[1,0,18,2],
"structboost_1_1hana_1_1Searchable.html#a695907e4a3ef7d0e9ab34f5afff709b2":[1,0,18,0],
Expand Down Expand Up @@ -56,12 +59,13 @@ var NAVTREEINDEX3 =
"structboost_1_1hana_1_1detail_1_1create.html":[1,8,2],
"structboost_1_1hana_1_1detail_1_1decay.html":[1,8,3],
"structboost_1_1hana_1_1detail_1_1first__unsatisfied__index.html":[1,8,4],
"structboost_1_1hana_1_1detail_1_1index__if.html":[1,8,5],
"structboost_1_1hana_1_1detail_1_1nested__by.html":[1,8,6],
"structboost_1_1hana_1_1detail_1_1nested__than.html":[1,8,7],
"structboost_1_1hana_1_1detail_1_1nested__to.html":[1,8,8],
"structboost_1_1hana_1_1detail_1_1operators_1_1adl.html":[1,8,9],
"structboost_1_1hana_1_1detail_1_1std__common__type.html":[1,8,10],
"structboost_1_1hana_1_1detail_1_1has__duplicates.html":[1,8,5],
"structboost_1_1hana_1_1detail_1_1index__if.html":[1,8,6],
"structboost_1_1hana_1_1detail_1_1nested__by.html":[1,8,7],
"structboost_1_1hana_1_1detail_1_1nested__than.html":[1,8,8],
"structboost_1_1hana_1_1detail_1_1nested__to.html":[1,8,9],
"structboost_1_1hana_1_1detail_1_1operators_1_1adl.html":[1,8,10],
"structboost_1_1hana_1_1detail_1_1std__common__type.html":[1,8,11],
"structboost_1_1hana_1_1embedding.html":[1,3,3],
"structboost_1_1hana_1_1has__common.html":[1,3,1],
"structboost_1_1hana_1_1integral__constant.html":[1,1,1],
Expand Down Expand Up @@ -206,8 +210,8 @@ var NAVTREEINDEX3 =
"transform_8hpp.html":[3,0,0,139],
"tuple_8hpp.html":[3,0,0,140],
"type_8hpp.html":[3,0,0,141],
"type__foldl1_8hpp.html":[3,0,0,2,24],
"type__foldr1_8hpp.html":[3,0,0,2,25],
"type__foldl1_8hpp.html":[3,0,0,2,25],
"type__foldr1_8hpp.html":[3,0,0,2,26],
"unfold__left_8hpp.html":[3,0,0,142],
"unfold__right_8hpp.html":[3,0,0,143],
"union_8hpp.html":[3,0,0,144],
Expand All @@ -217,9 +221,9 @@ var NAVTREEINDEX3 =
"value_8hpp.html":[3,0,0,147],
"version_8hpp.html":[3,0,0,148],
"version_8hpp.html#a36988ad8e4f82e0bfb7ff8e4808143a7":[3,0,0,148,0],
"void__t_8hpp.html":[3,0,0,2,26],
"void__t_8hpp.html":[3,0,0,2,27],
"while_8hpp.html":[3,0,0,149],
"wrong_8hpp.html":[3,0,0,2,27],
"wrong_8hpp.html":[3,0,0,2,28],
"zero_8hpp.html":[3,0,0,150],
"zip_8hpp.html":[3,0,0,151],
"zip__shortest_8hpp.html":[3,0,0,152],
Expand Down
1 change: 1 addition & 0 deletions search/all_2.js
2 changes: 2 additions & 0 deletions search/all_8.js
Expand Up @@ -4,5 +4,7 @@ var searchData=
['has_5fcommon',['has_common',['../structboost_1_1hana_1_1has__common.html',1,'boost::hana']]],
['has_5fcommon_5fembedding',['has_common_embedding',['../group__group-details.html#gae85b604ae6c7a386f0fc3631c561091b',1,'boost::hana::detail']]],
['has_5fcommon_5fembedding_2ehpp',['has_common_embedding.hpp',['../has__common__embedding_8hpp.html',1,'']]],
['has_5fduplicates',['has_duplicates',['../structboost_1_1hana_1_1detail_1_1has__duplicates.html',1,'boost::hana::detail']]],
['has_5fduplicates_2ehpp',['has_duplicates.hpp',['../has__duplicates_8hpp.html',1,'']]],
['has_5fnontrivial_5fcommon_5fembedding',['has_nontrivial_common_embedding',['../group__group-details.html#ga9acac3c4609cff5f0957572744c61ec4',1,'boost::hana::detail']]]
];
3 changes: 2 additions & 1 deletion search/classes_7.js
@@ -1,4 +1,5 @@
var searchData=
[
['has_5fcommon',['has_common',['../structboost_1_1hana_1_1has__common.html',1,'boost::hana']]]
['has_5fcommon',['has_common',['../structboost_1_1hana_1_1has__common.html',1,'boost::hana']]],
['has_5fduplicates',['has_duplicates',['../structboost_1_1hana_1_1detail_1_1has__duplicates.html',1,'boost::hana::detail']]]
];
3 changes: 2 additions & 1 deletion search/files_7.js
@@ -1,5 +1,6 @@
var searchData=
[
['hana_2ehpp',['hana.hpp',['../hana_8hpp.html',1,'']]],
['has_5fcommon_5fembedding_2ehpp',['has_common_embedding.hpp',['../has__common__embedding_8hpp.html',1,'']]]
['has_5fcommon_5fembedding_2ehpp',['has_common_embedding.hpp',['../has__common__embedding_8hpp.html',1,'']]],
['has_5fduplicates_2ehpp',['has_duplicates.hpp',['../has__duplicates_8hpp.html',1,'']]]
];
2 changes: 1 addition & 1 deletion structboost_1_1hana_1_1Applicative.html
Expand Up @@ -261,7 +261,7 @@ <h2>Example </h2>
<div class="line"> hana::nothing</div>
<div class="line"> );</div>
<div class="line">}</div>
</div><!-- fragment --><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>Consider giving access to all the arguments to the tag-dispatched implementation for performance purposes. </dd></dl>
</div><!-- fragment --><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000005">Todo:</a></b></dt><dd>Consider giving access to all the arguments to the tag-dispatched implementation for performance purposes. </dd></dl>

</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions structboost_1_1hana_1_1Orderable.html
Expand Up @@ -449,7 +449,7 @@ <h2>Example </h2>
<div class="line"> }</div>
</div><!-- fragment -->
<p>Returns the greatest of its arguments according to the <code>less</code> ordering. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000005">Todo:</a></b></dt><dd>Can't specify the signature here either. See <code>min</code> for details.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000006">Todo:</a></b></dt><dd>Can't specify the signature here either. See <code>min</code> for details.</dd></dl>
<h2>Example </h2>
<div class="fragment"><div class="line"><span class="comment">/*</span></div>
<div class="line"><span class="comment">@copyright Louis Dionne 2013-2016</span></div>
Expand Down Expand Up @@ -495,7 +495,7 @@ <h2>Example </h2>
<div class="line"> }</div>
</div><!-- fragment -->
<p>Returns the smallest of its arguments according to the <code>less</code> ordering. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000006">Todo:</a></b></dt><dd>We can't specify the signature right now, because the tag of the returned object depends on whether <code>x &lt; y</code> or not. If we wanted to be mathematically correct, we should probably ask that <code>if_(cond, x, y)</code> returns a common data type of <code>x</code> and <code>y</code>, and then the behavior of <code>min</code> would follow naturally. However, I'm unsure whether this is desirable because that's a big requirement.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000007">Todo:</a></b></dt><dd>We can't specify the signature right now, because the tag of the returned object depends on whether <code>x &lt; y</code> or not. If we wanted to be mathematically correct, we should probably ask that <code>if_(cond, x, y)</code> returns a common data type of <code>x</code> and <code>y</code>, and then the behavior of <code>min</code> would follow naturally. However, I'm unsure whether this is desirable because that's a big requirement.</dd></dl>
<h2>Example </h2>
<div class="fragment"><div class="line"><span class="comment">/*</span></div>
<div class="line"><span class="comment">@copyright Louis Dionne 2013-2016</span></div>
Expand Down
143 changes: 143 additions & 0 deletions structboost_1_1hana_1_1detail_1_1has__duplicates-members.html
@@ -0,0 +1,143 @@
<!--
Copyright Louis Dionne 2013-2016
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-->
<!-- HTML header for doxygen 1.8.9.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>Boost.Hana: Member List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
MathJax.Hub.Config({
"HTML-CSS": {
linebreaks: {
automatic: true,
width: "75% container"
}
}
});
</script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<!-- Additional javascript for drawing charts. -->
<script type="text/javascript" src="https://code.highcharts.com/highcharts.js"></script>
<script type="text/javascript" src="https://code.highcharts.com/modules/data.js"></script>
<script type="text/javascript" src="https://code.highcharts.com/modules/exporting.js"></script>
<script type="text/javascript" src="chart.js"></script>
<script type="text/javascript" src="hana.js"></script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="Boost.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Hana
</div>
<div id="projectbrief">Your standard library for metaprogramming</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('structboost_1_1hana_1_1detail_1_1has__duplicates.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
<div class="headertitle">
<div class="title">boost::hana::detail::has_duplicates&lt; T &gt; Member List</div> </div>
</div><!--header-->
<div class="contents">

<p>This is the complete list of members for <a class="el" href="structboost_1_1hana_1_1detail_1_1has__duplicates.html">boost::hana::detail::has_duplicates&lt; T &gt;</a>, including all inherited members.</p>
<table class="directory">
</table></div><!-- contents -->
</div><!-- doc-content -->
<!--
Copyright Louis Dionne 2013-2016
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-->
<!-- HTML footer for doxygen 1.8.9.1-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
</ul>
</div>
</body>
</html>
151 changes: 151 additions & 0 deletions structboost_1_1hana_1_1detail_1_1has__duplicates.html
@@ -0,0 +1,151 @@
<!--
Copyright Louis Dionne 2013-2016
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-->
<!-- HTML header for doxygen 1.8.9.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>Boost.Hana: boost::hana::detail::has_duplicates&lt; T &gt; Struct Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
// Copyright Louis Dionne 2013-2016
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
MathJax.Hub.Config({
"HTML-CSS": {
linebreaks: {
automatic: true,
width: "75% container"
}
}
});
</script><script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<!-- Additional javascript for drawing charts. -->
<script type="text/javascript" src="https://code.highcharts.com/highcharts.js"></script>
<script type="text/javascript" src="https://code.highcharts.com/modules/data.js"></script>
<script type="text/javascript" src="https://code.highcharts.com/modules/exporting.js"></script>
<script type="text/javascript" src="chart.js"></script>
<script type="text/javascript" src="hana.js"></script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="Boost.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Hana
</div>
<div id="projectbrief">Your standard library for metaprogramming</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('structboost_1_1hana_1_1detail_1_1has__duplicates.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
<div class="summary">
<a href="structboost_1_1hana_1_1detail_1_1has__duplicates-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">boost::hana::detail::has_duplicates&lt; T &gt; Struct Template Reference<div class="ingroups"><a class="el" href="group__group-details.html">Details</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
<div class="textblock"><h3>template&lt;typename... T&gt;<br />
struct boost::hana::detail::has_duplicates&lt; T &gt;</h3>

<p>Returns whether any of the <code>T</code>s are duplicate w.r.t. <code>hana::equal</code>. </p>
<p>In particular, this does not check whether all of the <code>T</code>s are unique as <em>types</em>, but rather whether they are unique when compared as <code>hana::equal(std::declval&lt;T&gt;(), std::declval&lt;U&gt;())</code>. This assumes the comparison to return an <code><a class="el" href="structboost_1_1hana_1_1IntegralConstant.html" title="The IntegralConstant concept represents compile-time integral values. ">IntegralConstant</a></code> that can be explicitly converted to <code>bool</code>.</p>
<dl class="section note"><dt>Note</dt><dd>Since this utility is mostly used in assertions to check that there are no duplicates in a sequence, we expect it to return <code>false</code> most of the time (otherwise we will assert). Hence, this implementation is biased towards the fact that we <b>will</b> have to compare every pair of elements in most cases, and it does not try to be lazy.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>This implementation is O(n^2). We could do it in O(n), but that would require a more elaborate setup including storage with O(1) lookup (which could be based on a compile-time hash). If we implement such storage for associative sequences, we could use it to optimize this. </dd></dl>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!--
Copyright Louis Dionne 2013-2016
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
-->
<!-- HTML footer for doxygen 1.8.9.1-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboost.html">boost</a></li><li class="navelem"><b>hana</b></li><li class="navelem"><b>detail</b></li><li class="navelem"><a class="el" href="structboost_1_1hana_1_1detail_1_1has__duplicates.html">has_duplicates</a></li>
</ul>
</div>
</body>
</html>
10 changes: 6 additions & 4 deletions todo.html
Expand Up @@ -124,7 +124,7 @@
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="reflist">
<dt><a class="anchor" id="_todo000004"></a>Member <a class="el" href="structboost_1_1hana_1_1Applicative.html#a5a974a72d39f90af2626d167d4efe29a">ap</a> </dt>
<dt><a class="anchor" id="_todo000005"></a>Member <a class="el" href="structboost_1_1hana_1_1Applicative.html#a5a974a72d39f90af2626d167d4efe29a">ap</a> </dt>
<dd>Consider giving access to all the arguments to the tag-dispatched implementation for performance purposes. </dd>
<dt><a class="anchor" id="_todo000001"></a>Namespace <a class="el" href="namespaceboost.html">boost</a> </dt>
<dd>Until we strip down headers, this includes too much </dd>
Expand All @@ -133,11 +133,13 @@
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; ==</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;CanonicalConstant&lt;long&gt;</div>
</div><!-- fragment --> </dd>
<dt><a class="anchor" id="_todo000005"></a>Member <a class="el" href="structboost_1_1hana_1_1Orderable.html#a9fb8718f43756efef3953635f34fd67e">max</a> </dt>
<dt><a class="anchor" id="_todo000004"></a>Class <a class="el" href="structboost_1_1hana_1_1detail_1_1has__duplicates.html">boost::hana::detail::has_duplicates&lt; T &gt;</a> </dt>
<dd>This implementation is O(n^2). We could do it in O(n), but that would require a more elaborate setup including storage with O(1) lookup (which could be based on a compile-time hash). If we implement such storage for associative sequences, we could use it to optimize this. </dd>
<dt><a class="anchor" id="_todo000006"></a>Member <a class="el" href="structboost_1_1hana_1_1Orderable.html#a9fb8718f43756efef3953635f34fd67e">max</a> </dt>
<dd>Can't specify the signature here either. See <code>min</code> for details. </dd>
<dt><a class="anchor" id="_todo000006"></a>Member <a class="el" href="structboost_1_1hana_1_1Orderable.html#af10ea2fee24c0a780758f67721bb5bfa">min</a> </dt>
<dt><a class="anchor" id="_todo000007"></a>Member <a class="el" href="structboost_1_1hana_1_1Orderable.html#af10ea2fee24c0a780758f67721bb5bfa">min</a> </dt>
<dd>We can't specify the signature right now, because the tag of the returned object depends on whether <code>x &lt; y</code> or not. If we wanted to be mathematically correct, we should probably ask that <code>if_(cond, x, y)</code> returns a common data type of <code>x</code> and <code>y</code>, and then the behavior of <code>min</code> would follow naturally. However, I'm unsure whether this is desirable because that's a big requirement. </dd>
<dt><a class="anchor" id="_todo000010"></a>page <a class="el" href="index.html">User Manual</a> </dt>
<dt><a class="anchor" id="_todo000011"></a>page <a class="el" href="index.html">User Manual</a> </dt>
<dd><p class="startdd">Improve this explanation and talk about non-integral constant expressions wrapped into types.</p>
<p class="enddd">Explain how side-effects may not appear inside constant expressions, even if the expression they yield are not accessed.</p>
</dd>
Expand Down