Micro template library A library for building device drivers
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

217 lignes
180 KiB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=9"/>
  6. <meta name="generator" content="Doxygen 1.8.14"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>uTL: include/utl/concepts/stl.h Source File</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  13. <script type="text/javascript" src="resize.js"></script>
  14. <script type="text/javascript" src="navtreedata.js"></script>
  15. <script type="text/javascript" src="navtree.js"></script>
  16. <script type="text/javascript">
  17. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  18. $(document).ready(initResizable);
  19. /* @license-end */</script>
  20. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  21. <script type="text/javascript" src="search/searchdata.js"></script>
  22. <script type="text/javascript" src="search/search.js"></script>
  23. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  24. </head>
  25. <body>
  26. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  27. <div id="titlearea">
  28. <table cellspacing="0" cellpadding="0">
  29. <tbody>
  30. <tr style="height: 56px;">
  31. <td id="projectalign" style="padding-left: 0.5em;">
  32. <div id="projectname">uTL
  33. </div>
  34. <div id="projectbrief">micro Template library</div>
  35. </td>
  36. </tr>
  37. </tbody>
  38. </table>
  39. </div>
  40. <!-- end header part -->
  41. <!-- Generated by Doxygen 1.8.14 -->
  42. <script type="text/javascript">
  43. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  44. var searchBox = new SearchBox("searchBox", "search",false,'Search');
  45. /* @license-end */
  46. </script>
  47. <script type="text/javascript" src="menudata.js"></script>
  48. <script type="text/javascript" src="menu.js"></script>
  49. <script type="text/javascript">
  50. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  51. $(function() {
  52. initMenu('',true,false,'search.php','Search');
  53. $(document).ready(function() { init_search(); });
  54. });
  55. /* @license-end */</script>
  56. <div id="main-nav"></div>
  57. </div><!-- top -->
  58. <div id="side-nav" class="ui-resizable side-nav-resizable">
  59. <div id="nav-tree">
  60. <div id="nav-tree-contents">
  61. <div id="nav-sync" class="sync"></div>
  62. </div>
  63. </div>
  64. <div id="splitbar" style="-moz-user-select:none;"
  65. class="ui-resizable-handle">
  66. </div>
  67. </div>
  68. <script type="text/javascript">
  69. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  70. $(document).ready(function(){initNavTree('stl_8h_source.html','');});
  71. /* @license-end */
  72. </script>
  73. <div id="doc-content">
  74. <!-- window showing the filter options -->
  75. <div id="MSearchSelectWindow"
  76. onmouseover="return searchBox.OnSearchSelectShow()"
  77. onmouseout="return searchBox.OnSearchSelectHide()"
  78. onkeydown="return searchBox.OnSearchSelectKey(event)">
  79. </div>
  80. <!-- iframe showing the search results (closed by default) -->
  81. <div id="MSearchResultsWindow">
  82. <iframe src="javascript:void(0)" frameborder="0"
  83. name="MSearchResults" id="MSearchResults">
  84. </iframe>
  85. </div>
  86. <div class="header">
  87. <div class="headertitle">
  88. <div class="title">stl.h</div> </div>
  89. </div><!--header-->
  90. <div class="contents">
  91. <a href="stl_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifndef __utl_concepts_stl_h__</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#define __utl_concepts_stl_h__</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="impl_8h.html">utl/core/impl.h</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="meta_8h.html">utl/meta/meta.h</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="utility_2invoke_8h.html">utl/utility/invoke.h</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="defines_8h.html">utl/concepts/defines.h</a>&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceutl.html">utl</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespaceutl.html#a7a9d26263662e02fbe3b238da5fd7338"> 42</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl.html#a7a9d26263662e02fbe3b238da5fd7338">remove_cvref_t</a> = std::remove_cv_t&lt; std::remove_reference_t&lt;T&gt; &gt;;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespaceutl.html#a7d69beba08b81379703fd3b0ca42044d"> 45</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl.html#a7d69beba08b81379703fd3b0ca42044d">cref_</a> = <span class="keyword">const</span> std::remove_reference_t&lt;T&gt;&amp;;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespaceutl.html#aa3f95fc48a94b2fae3c2959b7c024998"> 48</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl.html#aa3f95fc48a94b2fae3c2959b7c024998">_ref_t</a> = std::add_lvalue_reference_t&lt;T&gt;;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _T1, <span class="keyword">typename</span> _T2, <span class="keyword">typename</span> _Ret =_T1&gt;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> = <a class="code" href="namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea">meta::eval</a>&lt;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespaceutl_1_1meta.html#ab3fed26a4c7a8204accb349f0b6600e8">meta::enable_if</a>&lt;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="structutl_1_1meta_1_1same__.html">meta::same_&lt;_T1, _T2&gt;::value</a>, _Ret</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; &gt;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c"> 55</a></span>&#160; &gt;;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="namespaceutl.html#af86da3571c3026c6bbd501c6b7bc5093"> 62</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#af86da3571c3026c6bbd501c6b7bc5093">Same</a> = <a class="code" href="structutl_1_1meta_1_1same__.html">meta::same_&lt;T, U&gt;::value</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment">// template&lt;class T&gt;</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">// _utlConcept Decayed = Same&lt;T, std::decay_t&lt;T&gt;&gt;;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> Derived, <span class="keyword">class</span> Base&gt;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="namespaceutl.html#a0904cc4071a8ea97a1d646dc0a9ca85b"> 71</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a0904cc4071a8ea97a1d646dc0a9ca85b">DerivedFrom</a> =</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; std::is_base_of&lt;Base, Derived&gt;::value &amp;&amp;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; std::is_convertible&lt;const volatile Derived*, const volatile Base*&gt;::value;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> From, <span class="keyword">class</span> To&gt;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"> #if CXX_CONCEPTS</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a9c88a03a5b6dd66200e86f98fb1eb9eb">ConvertibleTo</a> =</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; std::is_convertible&lt;From, To&gt;::value &amp;&amp;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; requires(From (&amp;f)()) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">static_cast&lt;</span>To<span class="keyword">&gt;</span>(f());</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; };</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor"> #else</span></div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="namespaceutl.html#a9c88a03a5b6dd66200e86f98fb1eb9eb"> 87</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a9c88a03a5b6dd66200e86f98fb1eb9eb">ConvertibleTo</a> = std::is_convertible&lt;From, To&gt;::value;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">namespace </span>common_impl {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// ========== common reference ===========</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1common__impl.html#ab43a461d352a35dc1b3de39bfe17e38b">__cond_res</a> =</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="namespaceutl_1_1common__impl.html#ab43a461d352a35dc1b3de39bfe17e38b"> 99</a></span>&#160; decltype(<span class="keyword">false</span> ? std::declval&lt;T(&amp;)()&gt;()() : std::declval&lt;U(&amp;)()&gt;()());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> From&gt;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____copy__cv__.html"> 102</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____copy__cv__.html">__copy_cv_</a> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; static_assert(!std::is_reference&lt;From&gt;::value);</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____copy__cv__.html#aab9e00c637c2bbbdb6d1398aca8e3f96"> 104</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> To&gt; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____copy__cv__.html#aab9e00c637c2bbbdb6d1398aca8e3f96">apply</a> = To;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> From&gt;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html"> 107</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____copy__cv__.html">__copy_cv_</a>&lt;const From&gt; {</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html#a6dfb1b1162563a05f62a004de401367e"> 108</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> To&gt; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html#a6dfb1b1162563a05f62a004de401367e">apply</a> = <span class="keyword">const</span> To;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; };</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> From&gt;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html"> 111</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____copy__cv__.html">__copy_cv_</a>&lt;volatile From&gt; {</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html#a1066914bb7b2d20c25f9f6b953f40edd"> 112</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> To&gt; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html#a1066914bb7b2d20c25f9f6b953f40edd">apply</a> = <span class="keyword">volatile</span> To;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; };</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> From&gt;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html"> 115</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____copy__cv__.html">__copy_cv_</a>&lt;const volatile From&gt; {</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html#a3b90863f9819b9537789a30ab6863aca"> 116</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> To&gt; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html#a3b90863f9819b9537789a30ab6863aca">apply</a> = <span class="keyword">const</span> <span class="keyword">volatile</span> To;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> From, <span class="keyword">class</span> To&gt;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="namespaceutl_1_1common__impl.html#aed700217ef1518692242c1059f3dff27"> 119</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1common__impl.html#aed700217ef1518692242c1059f3dff27">__copy_cv</a> = <a class="code" href="namespaceutl_1_1meta.html#a77630cd8adc01f7193f6cb834313d90f">meta::invoke&lt;__copy_cv_&lt;From&gt;</a>, To&gt;;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// CREF [meta.trans.other]/2.1</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="namespaceutl_1_1common__impl.html#a3d7922723a5d41f399f3c8a99e016e73"> 123</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1common__impl.html#a3d7922723a5d41f399f3c8a99e016e73">__cref</a> = std::add_lvalue_reference_t&lt;const std::remove_reference_t&lt;T&gt;&gt;;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// COMMON_REF [meta.trans.other]/2</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U, <span class="keyword">class</span> = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__ref__.html"> 127</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__ref__.html">__common_ref_</a> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; static_assert(std::is_reference&lt;T&gt;::value, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; static_assert(std::is_reference&lt;U&gt;::value, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; };</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="namespaceutl_1_1common__impl.html#a8913f9d610ed8720c817081662fa9f1f"> 133</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1common__impl.html#a8913f9d610ed8720c817081662fa9f1f">__common_ref</a> = <a class="code" href="namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea">meta::eval&lt;__common_ref_&lt;T, U&gt;</a>&gt;;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// [meta.trans.other]/2.5</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1common__impl.html#ae2f3d56c7e5144e099cdf37b19523290">__lref_res</a> = <a class="code" href="namespaceutl_1_1common__impl.html#ab43a461d352a35dc1b3de39bfe17e38b">__cond_res</a>&lt;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespaceutl_1_1common__impl.html#aed700217ef1518692242c1059f3dff27">__copy_cv&lt;T, U&gt;</a> &amp;,</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceutl_1_1common__impl.html#aed700217ef1518692242c1059f3dff27">__copy_cv&lt;U, T&gt;</a> &amp;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="namespaceutl_1_1common__impl.html#ae2f3d56c7e5144e099cdf37b19523290"> 140</a></span>&#160; &gt;;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// [meta.trans.other]/2.6</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U, <span class="keyword">class</span> R = __common_ref&lt;T&amp;, U&amp;&gt;&gt;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="namespaceutl_1_1common__impl.html#a312c9f3e740103f831a49624097948f5"> 144</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1common__impl.html#a312c9f3e740103f831a49624097948f5">__rref_res</a> = std::remove_reference_t&lt;R&gt;&amp;&amp;;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html"> 147</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__ref__.html">__common_ref_</a>&lt;T&amp;, U&amp;,</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">meta::void_t&lt;__lref_res&lt;T, U&gt;</a>,</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="namespaceutl_1_1meta.html#a181d79db46b10170529e85b907ed3dc7">meta::when&lt;std::is_reference&lt;__lref_res&lt;T, U&gt;</a>&gt;::value&gt;&gt; &gt; {</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html#a9818dd472dbf7e5819a37c772d0566d2"> 150</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html#a9818dd472dbf7e5819a37c772d0566d2">type</a> = <a class="code" href="namespaceutl_1_1common__impl.html#ae2f3d56c7e5144e099cdf37b19523290">__lref_res&lt;T, U&gt;</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; };</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html"> 154</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__ref__.html">__common_ref_</a>&lt;T&amp;&amp;, U&amp;&amp;,</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">meta::void_t&lt;__common_ref&lt;T&amp;, U&amp;&gt;</a>,</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="namespaceutl_1_1meta.html#a181d79db46b10170529e85b907ed3dc7">meta::when&lt;ConvertibleTo&lt;T&amp;&amp;, __rref_res&lt;T, U&gt;</a>&gt;&gt;,</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="namespaceutl_1_1meta.html#a181d79db46b10170529e85b907ed3dc7">meta::when&lt;ConvertibleTo&lt;U&amp;&amp;, __rref_res&lt;T, U&gt;</a>&gt;&gt;&gt; &gt; {</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html#a8f2b4a68e68f34543fa6e73774bec517"> 158</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html#a8f2b4a68e68f34543fa6e73774bec517">type</a> = <a class="code" href="namespaceutl_1_1common__impl.html#a312c9f3e740103f831a49624097948f5">__rref_res&lt;T, U&gt;</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; };</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="comment">// [meta.trans.other]/2.7</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html"> 163</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__ref__.html">__common_ref_</a>&lt;T&amp;&amp;, U&amp;,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">meta::void_t&lt;__common_ref&lt;const T&amp;, U&amp;&gt;</a>,</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="namespaceutl_1_1meta.html#a181d79db46b10170529e85b907ed3dc7">meta::when&lt;ConvertibleTo&lt;T&amp;&amp;, __common_ref&lt;const T&amp;, U&amp;&gt;</a>&gt;&gt;&gt; &gt; {</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html#ade0c54407b6f17f667c01eec748c7e14"> 166</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html#ade0c54407b6f17f667c01eec748c7e14">type</a> = <a class="code" href="namespaceutl_1_1common__impl.html#a8913f9d610ed8720c817081662fa9f1f">__common_ref&lt;const T&amp;, U&amp;&gt;</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; };</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="comment">// [meta.trans.other]/2.8</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html"> 171</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__ref__.html">__common_ref_</a>&lt;T&amp;, U&amp;&amp;,</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">meta::void_t&lt;__common_ref&lt;T&amp;, const U&amp;&gt;</a>,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="namespaceutl_1_1meta.html#a181d79db46b10170529e85b907ed3dc7">meta::when&lt;ConvertibleTo&lt;U&amp;&amp;, __common_ref&lt;T&amp;, const U&amp;&gt;</a>&gt;&gt;&gt; &gt; {</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html#a382d2ef7e9cf4cba7efe589969b64b07"> 174</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html#a382d2ef7e9cf4cba7efe589969b64b07">type</a> = <a class="code" href="namespaceutl_1_1common__impl.html#a8913f9d610ed8720c817081662fa9f1f">__common_ref&lt;T&amp;, const U&amp;&gt;</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; };</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span>&gt;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref.html"> 178</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____xref.html">__xref</a> {</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref.html#a032704fe2160d375719ade17fd93f91b"> 179</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> U&gt; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____xref.html#a032704fe2160d375719ade17fd93f91b">apply</a> = U;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; };</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html"> 182</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____xref.html">__xref</a>&lt;const T&gt; {</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html#aa0c18f8f497297768174b0d272209f4c"> 183</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> U&gt; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html#aa0c18f8f497297768174b0d272209f4c">apply</a> = <span class="keyword">const</span> U;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; };</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html"> 186</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____xref.html">__xref</a>&lt;volatile T&gt; {</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html#affd4de84c60ada7d645b9f4d66f17b25"> 187</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> U&gt; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html#affd4de84c60ada7d645b9f4d66f17b25">apply</a> = <span class="keyword">volatile</span> U;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; };</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html"> 190</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____xref.html">__xref</a>&lt;const volatile T&gt; {</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html#a298403b8085c58e3f18d61877f2186a5"> 191</a></span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> U&gt; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html#a298403b8085c58e3f18d61877f2186a5">apply</a> = <span class="keyword">const</span> <span class="keyword">volatile</span> U;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; };</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html"> 194</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____xref.html">__xref</a>&lt;T&amp;&gt; {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> U&gt; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html#a45952ba243315d71be48069faeb0aff0">apply</a> =</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html#a45952ba243315d71be48069faeb0aff0"> 196</a></span>&#160; std::add_lvalue_reference_t&lt;meta::invoke&lt;__xref&lt;T&gt;, U&gt;&gt;;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; };</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html"> 199</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____xref.html">__xref</a>&lt;T&amp;&amp;&gt; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> U&gt; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html#ab2e3a215cd9be370de57febb6cc290ec">apply</a> =</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html#ab2e3a215cd9be370de57febb6cc290ec"> 201</a></span>&#160; std::add_rvalue_reference_t&lt;meta::invoke&lt;__xref&lt;T&gt;, U&gt;&gt;;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; };</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span>,</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">class</span>,</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span>&gt; <span class="keyword">class</span>,</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span>&gt; <span class="keyword">class</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; &gt;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1basic__common__reference.html"> 209</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1basic__common__reference.html">basic_common_reference</a> { };</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1common__impl.html#a3bbe5eb74a1c6017f60e3034519d69d6">__basic_common_reference_t</a> = <a class="code" href="namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea">meta::eval</a>&lt;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="structutl_1_1common__impl_1_1basic__common__reference.html">basic_common_reference</a>&lt;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="namespaceutl.html#a7a9d26263662e02fbe3b238da5fd7338">remove_cvref_t&lt;T&gt;</a>,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="namespaceutl.html#a7a9d26263662e02fbe3b238da5fd7338">remove_cvref_t&lt;U&gt;</a>,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="structutl_1_1common__impl_1_1____xref.html">__xref&lt;T&gt;::template</a> <a class="code" href="namespaceutl_1_1meta.html#a3f684549221fac60bc8c7979cb4b98f4">apply</a>,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="structutl_1_1common__impl_1_1____xref.html">__xref&lt;U&gt;::template</a> <a class="code" href="namespaceutl_1_1meta.html#a3f684549221fac60bc8c7979cb4b98f4">apply</a></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; &gt;</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="namespaceutl_1_1common__impl.html#a3bbe5eb74a1c6017f60e3034519d69d6"> 219</a></span>&#160; &gt;;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span>...&gt;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1common__reference.html"> 222</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1common__reference.html">common_reference</a> {};</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span>... Ts&gt;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1common__impl.html#adc4b085a84c0355fda341475074ff230">common_reference_t</a> = <a class="code" href="namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea">meta::eval</a>&lt;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="structutl_1_1common__impl_1_1common__reference.html">common_reference</a>&lt;Ts...&gt;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="namespaceutl_1_1common__impl.html#adc4b085a84c0355fda341475074ff230"> 227</a></span>&#160; &gt;;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="comment">// [meta.trans.other]/5.2</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html"> 231</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1common__reference.html">common_reference</a>&lt;T&gt; {</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html#ad228404ea08fbb8929dc7792a803c5a4"> 232</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html#ad228404ea08fbb8929dc7792a803c5a4">type</a> = T;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; };</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// [meta.trans.other]/5.3.4</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>T, <span class="keyword">class </span>U, <span class="keyword">class</span>...&gt;</div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__reference3.html"> 237</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__reference3.html">__common_reference3</a></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; : std::common_type&lt;T, U&gt; {};</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// [meta.trans.other]/5.3.3</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html"> 242</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__reference3.html">__common_reference3</a>&lt;T, U,</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">meta::void_t&lt;__cond_res&lt;T, U&gt;</a>&gt;&gt; {</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html#a41c50c14e6bc947987661add1a95e777"> 244</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html#a41c50c14e6bc947987661add1a95e777">type</a> = <a class="code" href="namespaceutl_1_1common__impl.html#ab43a461d352a35dc1b3de39bfe17e38b">__cond_res&lt;T, U&gt;</a>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; };</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>T, <span class="keyword">class </span>U, <span class="keyword">class</span>...&gt;</div><div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__reference2.html"> 248</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__reference2.html">__common_reference2</a></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; : <a class="code" href="structutl_1_1common__impl_1_1____common__reference3.html">__common_reference3&lt;T, U&gt;</a> {};</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="comment">// [meta.trans.other]/5.3.2</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html"> 253</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__reference2.html">__common_reference2</a>&lt;T, U,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">meta::void_t&lt;__basic_common_reference_t&lt;T, U&gt;</a>&gt;&gt; {</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html#abad429fee19f4f511abfe089fa480404"> 255</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html#abad429fee19f4f511abfe089fa480404">type</a> = <a class="code" href="namespaceutl_1_1common__impl.html#a3bbe5eb74a1c6017f60e3034519d69d6">__basic_common_reference_t&lt;T, U&gt;</a>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; };</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>T, <span class="keyword">class </span>U, <span class="keyword">class</span>...&gt;</div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__reference.html"> 259</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__reference.html">__common_reference</a></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; : <a class="code" href="structutl_1_1common__impl_1_1____common__reference2.html">__common_reference2&lt;T, U&gt;</a> { };</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html"> 263</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1____common__reference.html">__common_reference</a>&lt;T, U,</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="namespaceutl_1_1meta.html#a181d79db46b10170529e85b907ed3dc7">meta::when&lt;std::is_reference&lt;T&gt;::value</a> &amp;&amp; std::is_reference&lt;U&gt;::value&gt;&gt; {</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html#af8297c9aa25bfb27c58f0f58722a0d28"> 265</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html#af8297c9aa25bfb27c58f0f58722a0d28">type</a> = <a class="code" href="namespaceutl_1_1common__impl.html#a8913f9d610ed8720c817081662fa9f1f">__common_ref&lt;T, U&gt;</a>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; };</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.html"> 269</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1common__reference.html">common_reference</a>&lt;T, U&gt; : <a class="code" href="structutl_1_1common__impl_1_1____common__reference.html">__common_reference</a>&lt;T, U&gt; { };</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="comment">// [meta.trans.other]/5.4</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class </span>T, <span class="keyword">class </span>U, <span class="keyword">class </span>V, <span class="keyword">class</span>... W&gt;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">//requires requires { typename common_reference_t&lt;T, U&gt;; }</span></div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html"> 274</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1common__impl_1_1common__reference.html">common_reference</a>&lt;T, U, V, W...&gt;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; : <a class="code" href="structutl_1_1common__impl_1_1common__reference.html">common_reference</a> &lt;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; common_reference_t&lt;T, U&gt;, V, W...</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; &gt; {};</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span>...Ts&gt;</div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="namespaceutl.html#a3970b90f0e0fd9f801cfcb1d955e3d42"> 281</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1common__impl_1_1common__reference.html">common_reference</a> = <a class="code" href="structutl_1_1common__impl_1_1common__reference.html">common_impl::common_reference</a>&lt;Ts...&gt;;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span>... Ts&gt;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl.html#a4d76d9e29b830c16ad7dd34e3800a746">common_reference_t</a> = <a class="code" href="namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea">meta::eval</a>&lt;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="structutl_1_1common__impl_1_1common__reference.html">common_reference</a>&lt;Ts...&gt;</div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="namespaceutl.html#a4d76d9e29b830c16ad7dd34e3800a746"> 286</a></span>&#160; &gt;;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">//FIXME: CommonReference needs better implementation</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="namespaceutl.html#a1cc37f121888dcc030b8e676b077024f"> 293</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a1cc37f121888dcc030b8e676b077024f">CommonReference</a> =</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; Same&lt;common_reference_t&lt;T, U&gt;, <a class="code" href="namespaceutl.html#a4d76d9e29b830c16ad7dd34e3800a746">common_reference_t&lt;U, T&gt;</a>&gt; &amp;&amp;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; ConvertibleTo&lt;T, common_reference_t&lt;T, U&gt;&gt; &amp;&amp;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; ConvertibleTo&lt;U, common_reference_t&lt;T, U&gt;&gt;;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="comment">// != std::Common on CommonReference</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="namespaceutl.html#a79e23f98aa58c2dcd111743a096ef092"> 301</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a79e23f98aa58c2dcd111743a096ef092">Common</a> =</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="preprocessor"> #if CXX_CONCEPTS</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; Same&lt;std::common_type_t&lt;T, U&gt;, std::common_type_t&lt;U, T&gt;&gt; &amp;&amp;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; requires {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">static_cast&lt;</span>std::common_type_t&lt;T, U&gt;<span class="keyword">&gt;</span>(std::declval&lt;T&gt;());</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keyword">static_cast&lt;</span>std::common_type_t&lt;T, U&gt;<span class="keyword">&gt;</span>(std::declval&lt;U&gt;());</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; };</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment">// } &amp;&amp;</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="comment">// CommonReference&lt;</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment">// std::add_lvalue_reference_t&lt;const T&gt;,</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment">// std::add_lvalue_reference_t&lt;const U&gt;&gt; &amp;&amp;</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment">// CommonReference&lt;</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment">// std::add_lvalue_reference_t&lt;std::common_type_t&lt;T, U&gt;&gt;,</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment">// std::common_reference_t&lt;</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment">// std::add_lvalue_reference_t&lt;const T&gt;,</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment">// std::add_lvalue_reference_t&lt;const U&gt;</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="comment">// &gt;</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="comment">// &gt;;</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor"> #else</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="comment">// meta::and_ &lt;</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; Same&lt;std::common_type_t&lt;T, U&gt;, std::common_type_t&lt;U, T&gt;&gt;; <span class="comment">//&gt;</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment">// meta::bool_&lt;CommonReference&lt;</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment">// std::add_lvalue_reference_t&lt;const T&gt;,</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment">// std::add_lvalue_reference_t&lt;const U&gt;</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment">// &gt;&gt;,</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment">// meta::bool_&lt; CommonReference&lt;</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment">// std::add_lvalue_reference_t&lt;std::common_type_t&lt;T, U&gt;&gt;,</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment">// common_reference_t&lt;</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment">// std::add_lvalue_reference_t&lt;const T&gt;,</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment">// std::add_lvalue_reference_t&lt;const U&gt;</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment">// &gt;</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment">// &gt;&gt;</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment">// &gt;::value;</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="namespaceutl.html#ada9137016ddccf3339b2f6b3c409cc3c"> 340</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#ada9137016ddccf3339b2f6b3c409cc3c">Integral</a> = std::is_integral&lt;T&gt;::value;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="namespaceutl.html#a667b758d906c466d1b8a878a45750bf1"> 346</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a667b758d906c466d1b8a878a45750bf1">SignedIntegral</a> = Integral&lt;T&gt; &amp;&amp; std::is_signed&lt;T&gt;::value;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="namespaceutl.html#a7fb6eaf8fc1c5d65755c8c96a7a9b61f"> 352</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a7fb6eaf8fc1c5d65755c8c96a7a9b61f">UnsignedIntegral</a> = Integral&lt;T&gt; &amp;&amp; !std::is_signed&lt;T&gt;::value;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="namespaceutl.html#a7b8e4a26148ed5f2c60e4fd7d41e7e63"> 356</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a7b8e4a26148ed5f2c60e4fd7d41e7e63">MoveAssignable</a> = std::is_move_assignable&lt;T&gt;::value;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="namespaceutl.html#a1be866c815c4fcb2a7344650c3491c0c"> 359</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a1be866c815c4fcb2a7344650c3491c0c">CopyAssignable</a> = std::is_copy_assignable&lt;T&gt;::value;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> LHS, <span class="keyword">class</span> RHS&gt;</div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="namespaceutl.html#acfbced82f83ceb87eeb77d31941c011a"> 366</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#acfbced82f83ceb87eeb77d31941c011a">Assignable</a> =</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor"> #if CXX_CONCEPTS</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; std::is_lvalue_reference&lt;LHS&gt;::value &amp;&amp;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment">// CommonReference&lt;</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment">// const std::remove_reference_t&lt;L&gt;&amp;,</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment">// const std::remove_reference_t&lt;R&gt;&amp;&gt; &amp;&amp;</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; requires(LHS lhs, RHS&amp;&amp; rhs) {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; lhs = std::forward&lt;RHS&gt;(rhs);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; requires <a class="code" href="namespaceutl.html#af86da3571c3026c6bbd501c6b7bc5093">Same</a>&lt;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; decltype(lhs = std::forward&lt;RHS&gt;(rhs)), LHS</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; &gt;;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; };</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="preprocessor"> #else</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; std::is_assignable&lt;LHS, RHS&gt;::value;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="preprocessor"> #if CXX_VER &lt; CXX_VER_STD_17</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">namespace </span>swappable_with_impl {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keyword">struct </span>is_swappable_with_ {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// can apply std::swap</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> _Tp,</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">typename</span> _Up,</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">typename</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; = decltype(<a class="code" href="namespaceutl.html#ae0f873b4883af7cc18cb23dd2810f4e6">std::swap</a>(std::declval&lt;_Tp&amp;&gt;(), std::declval&lt;_Up&amp;&gt;())),</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keyword">typename</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; = decltype(<a class="code" href="namespaceutl.html#ae0f873b4883af7cc18cb23dd2810f4e6">std::swap</a>(std::declval&lt;_Up&amp;&gt;(), std::declval&lt;_Tp&amp;&gt;()))&gt;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97">meta::true_</a> check(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">// can not apply std::swap</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">static</span> <a class="code" href="namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d">meta::false_</a> check(...);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; };</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Tp, <span class="keyword">typename</span> _Up&gt;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">struct </span><a class="code" href="namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24">is_swappable_with</a></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; : swappable_with_impl::is_swappable_with_ {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">using</span> type = decltype(check&lt;_Tp, _Up&gt;(0));</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; };</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="preprocessor"> #else</span></div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line" href="namespaceutl.html#a1d50e9abd420e77555624f3e52bc7479"> 407</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl.html#a1d50e9abd420e77555624f3e52bc7479">is_swappable</a> = <a class="code" href="namespaceutl.html#a1d50e9abd420e77555624f3e52bc7479">std::is_swappable</a>;</div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24"> 408</a></span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24">is_swappable_with</a> = <a class="code" href="namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24">std::is_swappable_with</a>;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="comment">// != std:: on CommonReference</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="namespaceutl.html#a4a3bb850ba59d499382bd11153104af7"> 413</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a4a3bb850ba59d499382bd11153104af7">SwappableWith</a> =</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24">is_swappable_with&lt;T, T&gt;::type::value</a> &amp;&amp;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24">is_swappable_with&lt;U, U&gt;::type::value</a> &amp;&amp;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24">is_swappable_with&lt;T, U&gt;::type::value</a> &amp;&amp;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24">is_swappable_with&lt;U, T&gt;::type::value</a>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment">// std::CommonReference&lt;</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment">// const std::remove_reference_t&lt;T&gt;&amp;,</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="comment">// const std::remove_reference_t&lt;U&gt;&amp;</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="comment">// &gt;;</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="comment">// != std:: we use is_swappable_with now is_swappable</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="namespaceutl.html#ae2b149b19fb3d69a4fc555e4474bf9de"> 425</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#ae2b149b19fb3d69a4fc555e4474bf9de">Swappable</a> = <a class="code" href="namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24">is_swappable_with&lt;T, T&gt;::type::value</a>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="namespaceutl.html#acf2f1df100b0cc4f127243a1a83a8469"> 432</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#acf2f1df100b0cc4f127243a1a83a8469">Destructible</a> = std::is_nothrow_destructible&lt;T&gt;::value;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>T, <span class="keyword">class</span>... Args&gt;</div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="namespaceutl.html#a2a3ef7a9c788ffc1291ce15d2e5869bf"> 438</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a2a3ef7a9c788ffc1291ce15d2e5869bf">Constructible</a> =</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; Destructible&lt;T&gt; &amp;&amp; std::is_constructible&lt;T, Args...&gt;::value;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="namespaceutl.html#aacd3a17129d764e8a80c615eb4b88dc3"> 444</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#aacd3a17129d764e8a80c615eb4b88dc3">DefaultConstructible</a> = Constructible&lt;T&gt;;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="namespaceutl.html#a2a728f3d477d96f4f719bf62079321cf"> 452</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a2a728f3d477d96f4f719bf62079321cf">MoveConstructible</a> =</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; Constructible&lt;T, T&gt; &amp;&amp; ConvertibleTo&lt;T, T&gt;;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="namespaceutl.html#afb0f121b33b44640406b724c4d582b70"> 459</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#afb0f121b33b44640406b724c4d582b70">CopyConstructible</a> =</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; MoveConstructible&lt;T&gt; &amp;&amp;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; Constructible&lt;T, _ref_t&lt;T&gt;&gt; &amp;&amp; ConvertibleTo&lt;_ref_t&lt;T&gt;, T&gt; &amp;&amp;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; Constructible&lt;T, const _ref_t&lt;T&gt;&gt; &amp;&amp; ConvertibleTo&lt;const _ref_t&lt;T&gt;, T&gt; &amp;&amp;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; Constructible&lt;T, const T&gt; &amp;&amp; ConvertibleTo&lt;const T, T&gt;;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="namespaceutl.html#afc25cb525eb29162042c21238f28f26e"> 469</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#afc25cb525eb29162042c21238f28f26e">Movable</a> =</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; std::is_object&lt;T&gt;::value &amp;&amp;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; MoveConstructible&lt;T&gt; &amp;&amp;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; Assignable&lt;_ref_t&lt;T&gt;, T&gt; &amp;&amp;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; Swappable&lt;T&gt;;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00480"></a><span class="lineno"><a class="line" href="namespaceutl.html#ac300f0e204f0ec4bd0ca38a551bb2b88"> 480</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#ac300f0e204f0ec4bd0ca38a551bb2b88">Copyable</a> =</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; CopyConstructible&lt;T&gt; &amp;&amp;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; Movable&lt;T&gt; &amp;&amp;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; Assignable&lt;_ref_t&lt;T&gt;, <span class="keyword">const</span> <a class="code" href="namespaceutl.html#aa3f95fc48a94b2fae3c2959b7c024998">_ref_t&lt;T&gt;</a>&gt;;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="preprocessor"> #if CXX_CONCEPTS</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> B&gt;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a38e00606b4b45a2ac59fa4576b4498c6">Boolean</a> =</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; Movable&lt;remove_cvref_t&lt;B&gt;&gt; &amp;&amp;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; requires(<span class="keyword">const</span> std::remove_reference_t&lt;B&gt;&amp; b1,</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keyword">const</span> std::remove_reference_t&lt;B&gt;&amp; b2, <span class="keyword">const</span> <span class="keywordtype">bool</span> a) {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; requires ConvertibleTo&lt;const std::remove_reference_t&lt;B&gt;&amp;, <span class="keywordtype">bool</span>&gt;;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; !b1; requires ConvertibleTo&lt;decltype(!b1), bool&gt;;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; b1 &amp;&amp; a; requires Same&lt;decltype(b1 &amp;&amp; a), bool&gt;;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; b1 || a; requires Same&lt;decltype(b1 || a), bool&gt;;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; b1 &amp;&amp; b2; requires Same&lt;decltype(b1 &amp;&amp; b2), bool&gt;;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; a &amp;&amp; b2; requires Same&lt;decltype(a &amp;&amp; b2), bool&gt;;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; b1 || b2; requires Same&lt;decltype(b1 || b2), bool&gt;;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; a || b2; requires Same&lt;decltype(a || b2), bool&gt;;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; b1 == b2; requires ConvertibleTo&lt;decltype(b1 == b2), bool&gt;;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; b1 == a; requires ConvertibleTo&lt;decltype(b1 == a), bool&gt;;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; a == b2; requires ConvertibleTo&lt;decltype(a == b2), bool&gt;;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; b1 != b2; requires ConvertibleTo&lt;decltype(b1 != b2), bool&gt;;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; b1 != a; requires ConvertibleTo&lt;decltype(b1 != a), bool&gt;;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; a != b2; requires ConvertibleTo&lt;decltype(a != b2), bool&gt;;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; };</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor"> #else</span></div><div class="line"><a name="l00511"></a><span class="lineno"><a class="line" href="namespaceutl_1_1details.html"> 511</a></span>&#160; <span class="keyword">namespace </span>details {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="comment">// template &lt;typename B&gt; using try_op_not_ = decltype(!std::declval&lt;cref_&lt;B&gt;&gt;());</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="comment">// template &lt;typename B&gt; using try_op_eq_ = decltype(std::declval&lt;cref_&lt;B&gt;&gt;() == std::declval&lt;cref_&lt;B&gt;&gt;());</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="comment">// template &lt;typename B&gt; using try_op_neq_ = decltype(std::declval&lt;cref_&lt;B&gt;&gt;() != std::declval&lt;cref_&lt;B&gt;&gt;());</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="comment">// template &lt;typename B&gt; using try_op_and_ = decltype(std::declval&lt;cref_&lt;B&gt;&gt;() &amp;&amp; std::declval&lt;cref_&lt;B&gt;&gt;());</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="comment">// template &lt;typename B&gt; using try_op_or_ = decltype(std::declval&lt;cref_&lt;B&gt;&gt;() || std::declval&lt;cref_&lt;B&gt;&gt;());</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="comment">// template &lt;typename B&gt;</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="comment">// struct is_boolean__ {</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="comment">// using type = meta::and_ &lt;</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="comment">// meta::is_detected&lt;B, try_op_not_&gt;,</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="comment">// meta::is_detected&lt;B, try_op_eq_&gt;,</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="comment">// meta::is_detected&lt;B, try_op_neq_&gt;,</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment">// meta::is_detected&lt;B, try_op_and_&gt;,</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="comment">// meta::is_detected&lt;B, try_op_or_&gt;</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="comment">// &gt;;</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="comment">// };</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__boolean__.html"> 530</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1details_1_1is__boolean__.html">is_boolean_</a> {</div><div class="line"><a name="l00531"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__boolean__.html#ad34df9d79caf33bf92019da4232b791c"> 531</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1details_1_1is__boolean__.html#ad34df9d79caf33bf92019da4232b791c">type</a> = <a class="code" href="namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d">meta::false_</a>;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; };</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B&gt;</div><div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html"> 535</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1details_1_1is__boolean__.html">is_boolean_</a> &lt;B, meta::<a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">void_t</a>&lt;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; meta::use_if_same_t&lt;bool, decltype(!std::declval&lt;cref_&lt;B&gt;&gt;())&gt;,</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;B&gt;&gt;() == std::declval&lt;cref_&lt;B&gt;&gt;())&gt;,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;B&gt;&gt;() != std::declval&lt;cref_&lt;B&gt;&gt;())&gt;,</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;B&gt;&gt;() &amp;&amp; std::declval&lt;cref_&lt;B&gt;&gt;())&gt;,</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;B&gt;&gt;() || std::declval&lt;cref_&lt;B&gt;&gt;())&gt;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; &gt;&gt; {</div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html#abfb3ea1ef62c31310d992fde67f92900"> 542</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html#abfb3ea1ef62c31310d992fde67f92900">type</a> = <a class="code" href="namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97">meta::true_</a>;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; };</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> B&gt;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1details.html#a7f9309206778a6e9f0859c328b4288df">is_boolean_t</a> = <a class="code" href="namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea">meta::eval</a> &lt;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="structutl_1_1details_1_1is__boolean__.html">is_boolean_&lt;B&gt;</a></div><div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="namespaceutl_1_1details.html#a7f9309206778a6e9f0859c328b4288df"> 548</a></span>&#160; &gt;;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> B&gt;</div><div class="line"><a name="l00551"></a><span class="lineno"><a class="line" href="namespaceutl.html#a38e00606b4b45a2ac59fa4576b4498c6"> 551</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a38e00606b4b45a2ac59fa4576b4498c6">Boolean</a> =</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; Movable&lt;remove_cvref_t&lt;B&gt;&gt; &amp;&amp;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="comment">//ConvertibleTo&lt;const std::remove_reference_t&lt;B&gt;&amp;, bool&gt; &amp;&amp;</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; ConvertibleTo&lt;const _ref_t&lt;B&gt;, <span class="keywordtype">bool</span>&gt; &amp;&amp;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; Same&lt;meta::true_, details::is_boolean_t&lt;B&gt;&gt;;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keyword">namespace </span>details {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__weakly__equality__comparable__with__.html"> 561</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1details_1_1is__weakly__equality__comparable__with__.html">is_weakly_equality_comparable_with_</a> {</div><div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__weakly__equality__comparable__with__.html#ab700b64203b780a4e35e0b9362224da4"> 562</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1details_1_1is__weakly__equality__comparable__with__.html#ab700b64203b780a4e35e0b9362224da4">type</a> = <a class="code" href="namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d">meta::false_</a>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; };</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html"> 566</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1details_1_1is__weakly__equality__comparable__with__.html">is_weakly_equality_comparable_with_</a>&lt;T, U, meta::<a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">void_t</a>&lt;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;T&gt;&gt;() == std::declval&lt;cref_&lt;U&gt;&gt;())&gt;,</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;T&gt;&gt;() != std::declval&lt;cref_&lt;U&gt;&gt;())&gt;,</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;U&gt;&gt;() == std::declval&lt;cref_&lt;T&gt;&gt;())&gt;,</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;U&gt;&gt;() != std::declval&lt;cref_&lt;T&gt;&gt;())&gt;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; &gt;&gt; {</div><div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html#a107023c7eaad95d6f6ed8eeb60801d69"> 572</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html#a107023c7eaad95d6f6ed8eeb60801d69">type</a> = <a class="code" href="namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97">meta::true_</a>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; };</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1details.html#a499205eb8ca7f46d1e417a27f52442b8">is_weakly_equality_comparable_with_t</a> = <a class="code" href="namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea">meta::eval</a>&lt;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="structutl_1_1details_1_1is__weakly__equality__comparable__with__.html">is_weakly_equality_comparable_with_ &lt;T, U&gt;</a></div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="namespaceutl_1_1details.html#a499205eb8ca7f46d1e417a27f52442b8"> 578</a></span>&#160; &gt;;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="namespaceutl.html#a216f6e14ca647d85841fa13c40dc4ee3"> 582</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a216f6e14ca647d85841fa13c40dc4ee3">WeaklyEqualityComparableWith</a> =</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor"> #if CXX_CONCEPTS</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; requires(<span class="keyword">const</span> std::remove_reference_t&lt;T&gt;&amp; t,</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keyword">const</span> std::remove_reference_t&lt;U&gt;&amp; u) {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; t == u; requires Boolean&lt;decltype(t == u)&gt;;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; t != u; requires Boolean&lt;decltype(t != u)&gt;;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; u == t; requires Boolean&lt;decltype(u == t)&gt;;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; u != t; requires Boolean&lt;decltype(u != t)&gt;;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; };</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="preprocessor"> #else</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; Same&lt;meta::true_, details::is_weakly_equality_comparable_with_t&lt;T, U&gt;&gt;;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00596"></a><span class="lineno"><a class="line" href="namespaceutl.html#a92a38a3d1638ccad068c24d1242ef63a"> 596</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a92a38a3d1638ccad068c24d1242ef63a">EqualityComparable</a> = WeaklyEqualityComparableWith&lt;T, T&gt;;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="namespaceutl.html#aa2be0b64c41b392c5264de5f5fee094e"> 599</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#aa2be0b64c41b392c5264de5f5fee094e">EqualityComparableWith</a> =</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; EqualityComparable&lt;T&gt; &amp;&amp;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; EqualityComparable&lt;U&gt; &amp;&amp;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment">// CommonReference&lt;</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment">// const std::remove_reference_t&lt;T&gt;&amp;,</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="comment">// const std::remove_reference_t&lt;U&gt;&amp;&gt; &amp;&amp;</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment">// EqualityComparable&lt;</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="comment">// common_reference_t&lt;</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="comment">// const std::remove_reference_t&lt;T&gt;&amp;,</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="comment">// const std::remove_reference_t&lt;U&gt;&amp;&gt;&gt; &amp;&amp;</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; WeaklyEqualityComparableWith&lt;T, U&gt;;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="preprocessor"> #if CXX_CONCEPTS</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a720d6ece86f3f3320816aaae02eb16e4">StrictTotallyOrdered</a> =</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; EqualityComparable&lt;T&gt; &amp;&amp;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; requires(<span class="keyword">const</span> std::remove_reference_t&lt;T&gt;&amp; a,</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keyword">const</span> std::remove_reference_t&lt;T&gt;&amp; b) {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; a &lt; b; requires Boolean&lt;decltype(a &lt; b)&gt;;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; a &gt; b; requires Boolean&lt;decltype(a &gt; b)&gt;;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; a &lt;= b; requires Boolean&lt;decltype(a &lt;= b)&gt;;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; a &gt;= b; requires Boolean&lt;decltype(a &gt;= b)&gt;;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; };</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="preprocessor"> #else</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keyword">namespace </span>details {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__strict__totally__ordered__.html"> 627</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1details_1_1is__strict__totally__ordered__.html">is_strict_totally_ordered_</a> {</div><div class="line"><a name="l00628"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__strict__totally__ordered__.html#acb182f06d015a63fbe00a9700422046f"> 628</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1details_1_1is__strict__totally__ordered__.html#acb182f06d015a63fbe00a9700422046f">type</a> = <a class="code" href="namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d">meta::false_</a>;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; };</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00632"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html"> 632</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1details_1_1is__strict__totally__ordered__.html">is_strict_totally_ordered_</a> &lt;T, meta::<a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">void_t</a> &lt;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;T&gt;&gt;() &lt; std::declval&lt;cref_&lt;T&gt;&gt;())&gt;,</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;T&gt;&gt;() &gt; std::declval&lt;cref_&lt;T&gt;&gt;())&gt;,</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;T&gt;&gt;() &lt;= std::declval&lt;cref_&lt;T&gt;&gt;())&gt;,</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;T&gt;&gt;() &gt;= std::declval&lt;cref_&lt;T&gt;&gt;())&gt;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; &gt;&gt; {</div><div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html#a221f1b2e947002d4888711116e5ebfb5"> 638</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html#a221f1b2e947002d4888711116e5ebfb5">type</a> = <a class="code" href="namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97">meta::true_</a>;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; };</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1details.html#a3d90ca0461264f84f75c7698f7bbb811">is_strict_totally_ordered_t</a> = <a class="code" href="namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea">meta::eval</a> &lt;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="structutl_1_1details_1_1is__strict__totally__ordered__.html">is_strict_totally_ordered_&lt;T&gt;</a></div><div class="line"><a name="l00644"></a><span class="lineno"><a class="line" href="namespaceutl_1_1details.html#a3d90ca0461264f84f75c7698f7bbb811"> 644</a></span>&#160; &gt;;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00647"></a><span class="lineno"><a class="line" href="namespaceutl.html#a720d6ece86f3f3320816aaae02eb16e4"> 647</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a720d6ece86f3f3320816aaae02eb16e4">StrictTotallyOrdered</a> =</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; EqualityComparable&lt;T&gt; &amp;&amp;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; Same &lt;meta::true_, details::is_strict_totally_ordered_t&lt;T&gt;&gt;;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="preprocessor"> #if CXX_CONCEPTS</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a5599d14d1bd008e4c14787d610a2b429">StrictTotallyOrderedWith</a> =</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; StrictTotallyOrdered&lt;T&gt; &amp;&amp;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; StrictTotallyOrdered&lt;U&gt; &amp;&amp;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="comment">// CommonReference&lt;</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;<span class="comment">// const std::remove_reference_t&lt;T&gt;&amp;,</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="comment">// const std::remove_reference_t&lt;U&gt;&amp;</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="comment">// &gt; &amp;&amp;</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="comment">// StrictTotallyOrdered&lt;</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;<span class="comment">// common_reference_t&lt;</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="comment">// const std::remove_reference_t&lt;T&gt;&amp;,</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;<span class="comment">// const std::remove_reference_t&lt;U&gt;&amp;</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="comment">// &gt;</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="comment">// &gt; &amp;&amp;</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; EqualityComparableWith&lt;T, U&gt; &amp;&amp;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; requires(<span class="keyword">const</span> std::remove_reference_t&lt;T&gt;&amp; t,</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keyword">const</span> std::remove_reference_t&lt;U&gt;&amp; u) {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; t &lt; u; requires Boolean&lt;decltype(t &lt; u)&gt;;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; t &gt; u; requires Boolean&lt;decltype(t &gt; u)&gt;;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; t &lt;= u; requires Boolean&lt;decltype(t &lt;= u)&gt;;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; t &gt;= u; requires Boolean&lt;decltype(t &gt;= u)&gt;;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; u &lt; t; requires Boolean&lt;decltype(u &lt; t)&gt;;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; u &gt; t; requires Boolean&lt;decltype(u &gt; t)&gt;;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; u &lt;= t; requires Boolean&lt;decltype(u &lt;= t)&gt;;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; u &gt;= t; requires Boolean&lt;decltype(u &gt;= t)&gt;;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; };</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="preprocessor"> #else</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keyword">namespace </span>details {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, <span class="keyword">typename</span> = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__strict__totally__ordered__with__.html"> 682</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1details_1_1is__strict__totally__ordered__with__.html">is_strict_totally_ordered_with_</a> {</div><div class="line"><a name="l00683"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__strict__totally__ordered__with__.html#a4687be9ddf2910a323d69193c0291723"> 683</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1details_1_1is__strict__totally__ordered__with__.html#a4687be9ddf2910a323d69193c0291723">type</a> = <a class="code" href="namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d">meta::false_</a>;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; };</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div><div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html"> 687</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1details_1_1is__strict__totally__ordered__with__.html">is_strict_totally_ordered_with_</a> &lt;T, U, meta::<a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">void_t</a> &lt;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;T&gt;&gt;() &lt; std::declval&lt;cref_&lt;U&gt;&gt;())&gt;,</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;T&gt;&gt;() &gt; std::declval&lt;cref_&lt;U&gt;&gt;())&gt;,</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;T&gt;&gt;() &lt;= std::declval&lt;cref_&lt;U&gt;&gt;())&gt;,</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;T&gt;&gt;() &gt;= std::declval&lt;cref_&lt;U&gt;&gt;())&gt;,</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;U&gt;&gt;() &lt; std::declval&lt;cref_&lt;T&gt;&gt;())&gt;,</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;U&gt;&gt;() &gt; std::declval&lt;cref_&lt;T&gt;&gt;())&gt;,</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;U&gt;&gt;() &lt;= std::declval&lt;cref_&lt;T&gt;&gt;())&gt;,</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; meta::use_if_same_t&lt;bool, decltype(std::declval&lt;cref_&lt;U&gt;&gt;() &gt;= std::declval&lt;cref_&lt;T&gt;&gt;())&gt;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; &gt;&gt; {</div><div class="line"><a name="l00697"></a><span class="lineno"><a class="line" href="structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html#a447a36dc0b2239ee20876c6255033345"> 697</a></span>&#160; <span class="keyword">using</span> <a class="code" href="structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html#a447a36dc0b2239ee20876c6255033345">type</a> = <a class="code" href="namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97">meta::true_</a>;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; };</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1details.html#acd9fac18316e44b7abd920686de886f0">is_strict_totally_ordered_with_t</a> = <a class="code" href="namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea">meta::eval</a> &lt;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="structutl_1_1details_1_1is__strict__totally__ordered__with__.html">is_strict_totally_ordered_with_&lt;T, U&gt;</a></div><div class="line"><a name="l00703"></a><span class="lineno"><a class="line" href="namespaceutl_1_1details.html#acd9fac18316e44b7abd920686de886f0"> 703</a></span>&#160; &gt;;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00706"></a><span class="lineno"><a class="line" href="namespaceutl.html#a5599d14d1bd008e4c14787d610a2b429"> 706</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a5599d14d1bd008e4c14787d610a2b429">StrictTotallyOrderedWith</a> =</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; StrictTotallyOrdered&lt;T&gt; &amp;&amp;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; StrictTotallyOrdered&lt;U&gt; &amp;&amp;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; EqualityComparableWith&lt;T, U&gt; &amp;&amp;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; Same &lt;meta::true_, details::is_strict_totally_ordered_with_t&lt;T, U&gt;&gt;;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00717"></a><span class="lineno"><a class="line" href="namespaceutl.html#af6b010e85897cb590e66a52157be1af5"> 717</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#af6b010e85897cb590e66a52157be1af5">Semiregular</a> = Copyable&lt;T&gt; &amp;&amp; DefaultConstructible&lt;T&gt;;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="namespaceutl.html#a3accaa436a17248b4214baebc582b2f6"> 723</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a3accaa436a17248b4214baebc582b2f6">Regular</a> = Semiregular&lt;T&gt; &amp;&amp; EqualityComparable&lt;T&gt;;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00729"></a><span class="lineno"><a class="line" href="namespaceutl.html#a7f86c4bf42b13d9525481d731b194308"> 729</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a7f86c4bf42b13d9525481d731b194308">Scalar</a> =</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; std::is_scalar&lt;T&gt;::value &amp;&amp; Regular&lt;T&gt;;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="namespaceutl.html#a41733496c30138efd3d88f13d9382aad"> 736</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a41733496c30138efd3d88f13d9382aad">Arithmetic</a> =</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; std::is_arithmetic&lt;T&gt;::value &amp;&amp; Scalar&lt;T&gt; &amp;&amp; StrictTotallyOrdered&lt;T&gt;;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;</div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="namespaceutl.html#a07e83d4763a298c1faf2b1069b55e286"> 743</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a07e83d4763a298c1faf2b1069b55e286">FloatingPoint</a> =</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; std::is_floating_point&lt;T&gt;::value &amp;&amp; Arithmetic&lt;T&gt;;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>F, <span class="keyword">class</span>... Args&gt;</div><div class="line"><a name="l00750"></a><span class="lineno"><a class="line" href="namespaceutl.html#a9d5bbdf19b08d6d714ec696b0ec44d0a"> 750</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a9d5bbdf19b08d6d714ec696b0ec44d0a">Invocable</a> = <a class="code" href="structutl_1_1is__invocable.html">is_invocable</a>&lt;F, Args...&gt;::value;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="comment">// requires(F&amp;&amp; f, Args&amp;&amp;... args) {</span></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="comment">// invoke(std::forward&lt;F&gt;(f), std::forward&lt;Args&gt;(args)...);</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="comment">// };</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keyword">template</span>&lt; <span class="keyword">class </span>F, <span class="keyword">class</span>... Args &gt;</div><div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="namespaceutl.html#ace9ef6da96e8cf5dc72762cd66240186"> 756</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#ace9ef6da96e8cf5dc72762cd66240186">RegularInvocable</a> = <a class="code" href="namespaceutl.html#a9d5bbdf19b08d6d714ec696b0ec44d0a">Invocable</a>&lt;F, Args...&gt;;</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keyword">template</span> &lt; <span class="keyword">class </span>F, <span class="keyword">class</span>... Args &gt;</div><div class="line"><a name="l00759"></a><span class="lineno"><a class="line" href="namespaceutl.html#aae56a019cdd2006c4f07d2e207289195"> 759</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#aae56a019cdd2006c4f07d2e207289195">Predicate</a> =</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <a class="code" href="namespaceutl.html#ace9ef6da96e8cf5dc72762cd66240186">RegularInvocable</a>&lt;F, Args...&gt; &amp;&amp;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <a class="code" href="namespaceutl.html#a38e00606b4b45a2ac59fa4576b4498c6">Boolean</a>&lt;<a class="code" href="namespaceutl.html#ae40494acc30f2894c74544f3e9142933">invoke_result_t</a>&lt;F, Args...&gt;&gt;;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> R, <span class="keyword">class</span> T, <span class="keyword">class</span> U&gt;</div><div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="namespaceutl.html#a6d1e9b4853dd005ddaf61a79333cab98"> 764</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#a6d1e9b4853dd005ddaf61a79333cab98">Relation</a> =</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; Predicate&lt;R, T, T&gt; &amp;&amp; Predicate&lt;R, U, U&gt; &amp;&amp;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; Predicate&lt;R, T, U&gt; &amp;&amp; Predicate&lt;R, U, T&gt;;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keyword">template</span> &lt; <span class="keyword">class</span> R, <span class="keyword">class</span> T, <span class="keyword">class</span> U &gt;</div><div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="namespaceutl.html#aa4b7b9105cfab3cd72865b5e0db23b11"> 769</a></span>&#160; <a class="code" href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a> <a class="code" href="namespaceutl.html#aa4b7b9105cfab3cd72865b5e0db23b11">StrictWeakOrder</a> = Relation&lt;R, T, U&gt;;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;}</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* __utl_concepts_stl_h__ */</span><span class="preprocessor"></span></div><div class="ttc" id="namespaceutl_html_af6b010e85897cb590e66a52157be1af5"><div class="ttname"><a href="namespaceutl.html#af6b010e85897cb590e66a52157be1af5">utl::Semiregular</a></div><div class="ttdeci">_utlConcept Semiregular</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00717">stl.h:717</a></div></div>
  92. <div class="ttc" id="structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4_html_a3b90863f9819b9537789a30ab6863aca"><div class="ttname"><a href="structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html#a3b90863f9819b9537789a30ab6863aca">utl::common_impl::__copy_cv_&lt; const volatile From &gt;::apply</a></div><div class="ttdeci">const volatile To apply</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00116">stl.h:116</a></div></div>
  93. <div class="ttc" id="namespaceutl_html_ae2b149b19fb3d69a4fc555e4474bf9de"><div class="ttname"><a href="namespaceutl.html#ae2b149b19fb3d69a4fc555e4474bf9de">utl::Swappable</a></div><div class="ttdeci">_utlConcept Swappable</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00425">stl.h:425</a></div></div>
  94. <div class="ttc" id="namespaceutl_html_a1d50e9abd420e77555624f3e52bc7479"><div class="ttname"><a href="namespaceutl.html#a1d50e9abd420e77555624f3e52bc7479">utl::is_swappable</a></div><div class="ttdeci">std::is_swappable is_swappable</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00407">stl.h:407</a></div></div>
  95. <div class="ttc" id="namespaceutl_html_a4a3bb850ba59d499382bd11153104af7"><div class="ttname"><a href="namespaceutl.html#a4a3bb850ba59d499382bd11153104af7">utl::SwappableWith</a></div><div class="ttdeci">_utlConcept SwappableWith</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00413">stl.h:413</a></div></div>
  96. <div class="ttc" id="structutl_1_1common__impl_1_1____copy__cv___html_aab9e00c637c2bbbdb6d1398aca8e3f96"><div class="ttname"><a href="structutl_1_1common__impl_1_1____copy__cv__.html#aab9e00c637c2bbbdb6d1398aca8e3f96">utl::common_impl::__copy_cv_::apply</a></div><div class="ttdeci">To apply</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00104">stl.h:104</a></div></div>
  97. <div class="ttc" id="meta_8h_html"><div class="ttname"><a href="meta_8h.html">meta.h</a></div><div class="ttdoc">Include all meta library. </div></div>
  98. <div class="ttc" id="namespaceutl_html_a216f6e14ca647d85841fa13c40dc4ee3"><div class="ttname"><a href="namespaceutl.html#a216f6e14ca647d85841fa13c40dc4ee3">utl::WeaklyEqualityComparableWith</a></div><div class="ttdeci">_utlConcept WeaklyEqualityComparableWith</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00582">stl.h:582</a></div></div>
  99. <div class="ttc" id="namespaceutl_html_a79e23f98aa58c2dcd111743a096ef092"><div class="ttname"><a href="namespaceutl.html#a79e23f98aa58c2dcd111743a096ef092">utl::Common</a></div><div class="ttdeci">_utlConcept Common</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00301">stl.h:301</a></div></div>
  100. <div class="ttc" id="group__concepts_html_gaf81026787698cd63592563ab8223062b"><div class="ttname"><a href="group__concepts.html#gaf81026787698cd63592563ab8223062b">_utlConcept</a></div><div class="ttdeci">#define _utlConcept</div><div class="ttdoc">utl concept keyword syntax wrapper </div><div class="ttdef"><b>Definition:</b> <a href="defines_8h_source.html#l00056">defines.h:56</a></div></div>
  101. <div class="ttc" id="namespaceutl_html_ac300f0e204f0ec4bd0ca38a551bb2b88"><div class="ttname"><a href="namespaceutl.html#ac300f0e204f0ec4bd0ca38a551bb2b88">utl::Copyable</a></div><div class="ttdeci">_utlConcept Copyable</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00480">stl.h:480</a></div></div>
  102. <div class="ttc" id="structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd_html_a221f1b2e947002d4888711116e5ebfb5"><div class="ttname"><a href="structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html#a221f1b2e947002d4888711116e5ebfb5">utl::details::is_strict_totally_ordered_&lt; T, meta::void_t&lt; meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; T &gt;&gt;()&lt; std::declval&lt; cref_&lt; T &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; T &gt;&gt;() &gt; std::declval&lt; cref_&lt; T &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; T &gt;&gt;()&lt;=std::declval&lt; cref_&lt; T &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; T &gt;&gt;() &gt;=std::declval&lt; cref_&lt; T &gt;&gt;())&gt; &gt; &gt;::type</a></div><div class="ttdeci">meta::true_ type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00638">stl.h:638</a></div></div>
  103. <div class="ttc" id="group__detection_html_gae7373c997420d16cf37e542eb3cfa3ad"><div class="ttname"><a href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">utl::meta::void_t</a></div><div class="ttdeci">void void_t</div><div class="ttdoc">void_t type alias </div><div class="ttdef"><b>Definition:</b> <a href="detection_8h_source.html#l00055">detection.h:55</a></div></div>
  104. <div class="ttc" id="structutl_1_1details_1_1is__strict__totally__ordered___html_acb182f06d015a63fbe00a9700422046f"><div class="ttname"><a href="structutl_1_1details_1_1is__strict__totally__ordered__.html#acb182f06d015a63fbe00a9700422046f">utl::details::is_strict_totally_ordered_::type</a></div><div class="ttdeci">meta::false_ type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00628">stl.h:628</a></div></div>
  105. <div class="ttc" id="structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4_html_a298403b8085c58e3f18d61877f2186a5"><div class="ttname"><a href="structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html#a298403b8085c58e3f18d61877f2186a5">utl::common_impl::__xref&lt; const volatile T &gt;::apply</a></div><div class="ttdeci">const volatile U apply</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00191">stl.h:191</a></div></div>
  106. <div class="ttc" id="namespaceutl_html_aa4b7b9105cfab3cd72865b5e0db23b11"><div class="ttname"><a href="namespaceutl.html#aa4b7b9105cfab3cd72865b5e0db23b11">utl::StrictWeakOrder</a></div><div class="ttdeci">_utlConcept StrictWeakOrder</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00769">stl.h:769</a></div></div>
  107. <div class="ttc" id="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343_html_ade0c54407b6f17f667c01eec748c7e14"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html#ade0c54407b6f17f667c01eec748c7e14">utl::common_impl::__common_ref_&lt; T &amp;&amp;, U &amp;, meta::void_t&lt; __common_ref&lt; const T &amp;, U &amp; &gt;, meta::when&lt; ConvertibleTo&lt; T &amp;&amp;, __common_ref&lt; const T &amp;, U &amp; &gt; &gt; &gt; &gt; &gt;::type</a></div><div class="ttdeci">__common_ref&lt; const T &amp;, U &amp; &gt; type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00166">stl.h:166</a></div></div>
  108. <div class="ttc" id="namespaceutl_html_a07e83d4763a298c1faf2b1069b55e286"><div class="ttname"><a href="namespaceutl.html#a07e83d4763a298c1faf2b1069b55e286">utl::FloatingPoint</a></div><div class="ttdeci">_utlConcept FloatingPoint</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00743">stl.h:743</a></div></div>
  109. <div class="ttc" id="namespaceutl_1_1common__impl_html_ab43a461d352a35dc1b3de39bfe17e38b"><div class="ttname"><a href="namespaceutl_1_1common__impl.html#ab43a461d352a35dc1b3de39bfe17e38b">utl::common_impl::__cond_res</a></div><div class="ttdeci">decltype(false ? std::declval&lt; T(&amp;)()&gt;()() :std::declval&lt; U(&amp;)()&gt;()()) __cond_res</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00099">stl.h:99</a></div></div>
  110. <div class="ttc" id="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9_html_a8f2b4a68e68f34543fa6e73774bec517"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html#a8f2b4a68e68f34543fa6e73774bec517">utl::common_impl::__common_ref_&lt; T &amp;&amp;, U &amp;&amp;, meta::void_t&lt; __common_ref&lt; T &amp;, U &amp; &gt;, meta::when&lt; ConvertibleTo&lt; T &amp;&amp;, __rref_res&lt; T, U &gt; &gt; &gt;, meta::when&lt; ConvertibleTo&lt; U &amp;&amp;, __rref_res&lt; T, U &gt; &gt; &gt; &gt; &gt;::type</a></div><div class="ttdeci">__rref_res&lt; T, U &gt; type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00158">stl.h:158</a></div></div>
  111. <div class="ttc" id="namespaceutl_1_1common__impl_html_a8913f9d610ed8720c817081662fa9f1f"><div class="ttname"><a href="namespaceutl_1_1common__impl.html#a8913f9d610ed8720c817081662fa9f1f">utl::common_impl::__common_ref</a></div><div class="ttdeci">meta::eval&lt; __common_ref_&lt; T, U &gt; &gt; __common_ref</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00133">stl.h:133</a></div></div>
  112. <div class="ttc" id="structutl_1_1details_1_1is__weakly__equality__comparable__with___html"><div class="ttname"><a href="structutl_1_1details_1_1is__weakly__equality__comparable__with__.html">utl::details::is_weakly_equality_comparable_with_</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00561">stl.h:561</a></div></div>
  113. <div class="ttc" id="structutl_1_1common__impl_1_1____common__ref___html"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__ref__.html">utl::common_impl::__common_ref_</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00127">stl.h:127</a></div></div>
  114. <div class="ttc" id="namespaceutl_1_1meta_html_ae9a5a8fbe8202785f059935af219fb97"><div class="ttname"><a href="namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97">utl::meta::true_</a></div><div class="ttdeci">bool_&lt; true &gt; true_</div><div class="ttdoc">The type used as a compile-time boolean with true value. </div><div class="ttdef"><b>Definition:</b> <a href="integral_8h_source.html#l00068">integral.h:68</a></div></div>
  115. <div class="ttc" id="namespaceutl_html_a7d69beba08b81379703fd3b0ca42044d"><div class="ttname"><a href="namespaceutl.html#a7d69beba08b81379703fd3b0ca42044d">utl::cref_</a></div><div class="ttdeci">const std::remove_reference_t&lt; T &gt; &amp; cref_</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00045">stl.h:45</a></div></div>
  116. <div class="ttc" id="namespaceutl_html_a720d6ece86f3f3320816aaae02eb16e4"><div class="ttname"><a href="namespaceutl.html#a720d6ece86f3f3320816aaae02eb16e4">utl::StrictTotallyOrdered</a></div><div class="ttdeci">_utlConcept StrictTotallyOrdered</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00647">stl.h:647</a></div></div>
  117. <div class="ttc" id="structutl_1_1common__impl_1_1____common__reference_html"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__reference.html">utl::common_impl::__common_reference</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00259">stl.h:259</a></div></div>
  118. <div class="ttc" id="namespaceutl_html_acfbced82f83ceb87eeb77d31941c011a"><div class="ttname"><a href="namespaceutl.html#acfbced82f83ceb87eeb77d31941c011a">utl::Assignable</a></div><div class="ttdeci">_utlConcept Assignable</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00366">stl.h:366</a></div></div>
  119. <div class="ttc" id="namespaceutl_html_a7f86c4bf42b13d9525481d731b194308"><div class="ttname"><a href="namespaceutl.html#a7f86c4bf42b13d9525481d731b194308">utl::Scalar</a></div><div class="ttdeci">_utlConcept Scalar</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00729">stl.h:729</a></div></div>
  120. <div class="ttc" id="namespaceutl_html_a9c88a03a5b6dd66200e86f98fb1eb9eb"><div class="ttname"><a href="namespaceutl.html#a9c88a03a5b6dd66200e86f98fb1eb9eb">utl::ConvertibleTo</a></div><div class="ttdeci">_utlConcept ConvertibleTo</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00087">stl.h:87</a></div></div>
  121. <div class="ttc" id="structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9_html_a41c50c14e6bc947987661add1a95e777"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html#a41c50c14e6bc947987661add1a95e777">utl::common_impl::__common_reference3&lt; T, U, meta::void_t&lt; __cond_res&lt; T, U &gt; &gt; &gt;::type</a></div><div class="ttdeci">__cond_res&lt; T, U &gt; type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00244">stl.h:244</a></div></div>
  122. <div class="ttc" id="namespaceutl_1_1common__impl_html_a3d7922723a5d41f399f3c8a99e016e73"><div class="ttname"><a href="namespaceutl_1_1common__impl.html#a3d7922723a5d41f399f3c8a99e016e73">utl::common_impl::__cref</a></div><div class="ttdeci">std::add_lvalue_reference_t&lt; const std::remove_reference_t&lt; T &gt; &gt; __cref</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00123">stl.h:123</a></div></div>
  123. <div class="ttc" id="namespaceutl_html_a1be866c815c4fcb2a7344650c3491c0c"><div class="ttname"><a href="namespaceutl.html#a1be866c815c4fcb2a7344650c3491c0c">utl::CopyAssignable</a></div><div class="ttdeci">_utlConcept CopyAssignable</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00359">stl.h:359</a></div></div>
  124. <div class="ttc" id="structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4_html_ab2e3a215cd9be370de57febb6cc290ec"><div class="ttname"><a href="structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html#ab2e3a215cd9be370de57febb6cc290ec">utl::common_impl::__xref&lt; T &amp;&amp; &gt;::apply</a></div><div class="ttdeci">std::add_rvalue_reference_t&lt; meta::invoke&lt; __xref&lt; T &gt;, U &gt; &gt; apply</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00201">stl.h:201</a></div></div>
  125. <div class="ttc" id="namespaceutl_1_1meta_html_ab3fed26a4c7a8204accb349f0b6600e8"><div class="ttname"><a href="namespaceutl_1_1meta.html#ab3fed26a4c7a8204accb349f0b6600e8">utl::meta::enable_if</a></div><div class="ttdeci">std::enable_if&lt; If, _Tp &gt; enable_if</div><div class="ttdoc">enable_if, imported from stl </div><div class="ttdef"><b>Definition:</b> <a href="sfinae_8h_source.html#l00060">sfinae.h:60</a></div></div>
  126. <div class="ttc" id="namespaceutl_html_ac5e425d39e8ee62e68664c6166d02d0c"><div class="ttname"><a href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">utl::use_if_same_t</a></div><div class="ttdeci">meta::eval&lt; meta::enable_if&lt; meta::same_&lt; _T1, _T2 &gt;::value, _Ret &gt; &gt; use_if_same_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00055">stl.h:55</a></div></div>
  127. <div class="ttc" id="namespaceutl_1_1meta_html_a3f684549221fac60bc8c7979cb4b98f4"><div class="ttname"><a href="namespaceutl_1_1meta.html#a3f684549221fac60bc8c7979cb4b98f4">utl::meta::apply</a></div><div class="ttdeci">apply_impl::apply_&lt; Fn, Seq &gt; apply</div><div class="ttdef"><b>Definition:</b> <a href="typelist_8h_source.html#l00197">typelist.h:197</a></div></div>
  128. <div class="ttc" id="namespaceutl_html_acf2f1df100b0cc4f127243a1a83a8469"><div class="ttname"><a href="namespaceutl.html#acf2f1df100b0cc4f127243a1a83a8469">utl::Destructible</a></div><div class="ttdeci">_utlConcept Destructible</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00432">stl.h:432</a></div></div>
  129. <div class="ttc" id="namespaceutl_html_a9d5bbdf19b08d6d714ec696b0ec44d0a"><div class="ttname"><a href="namespaceutl.html#a9d5bbdf19b08d6d714ec696b0ec44d0a">utl::Invocable</a></div><div class="ttdeci">_utlConcept Invocable</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00750">stl.h:750</a></div></div>
  130. <div class="ttc" id="structutl_1_1details_1_1is__boolean___html"><div class="ttname"><a href="structutl_1_1details_1_1is__boolean__.html">utl::details::is_boolean_</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00530">stl.h:530</a></div></div>
  131. <div class="ttc" id="namespaceutl_1_1details_html_a3d90ca0461264f84f75c7698f7bbb811"><div class="ttname"><a href="namespaceutl_1_1details.html#a3d90ca0461264f84f75c7698f7bbb811">utl::details::is_strict_totally_ordered_t</a></div><div class="ttdeci">meta::eval&lt; is_strict_totally_ordered_&lt; T &gt; &gt; is_strict_totally_ordered_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00644">stl.h:644</a></div></div>
  132. <div class="ttc" id="namespaceutl_html_af86da3571c3026c6bbd501c6b7bc5093"><div class="ttname"><a href="namespaceutl.html#af86da3571c3026c6bbd501c6b7bc5093">utl::Same</a></div><div class="ttdeci">_utlConcept Same</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00062">stl.h:62</a></div></div>
  133. <div class="ttc" id="structutl_1_1details_1_1is__boolean___html_ad34df9d79caf33bf92019da4232b791c"><div class="ttname"><a href="structutl_1_1details_1_1is__boolean__.html#ad34df9d79caf33bf92019da4232b791c">utl::details::is_boolean_::type</a></div><div class="ttdeci">meta::false_ type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00531">stl.h:531</a></div></div>
  134. <div class="ttc" id="structutl_1_1details_1_1is__strict__totally__ordered__with___html_a4687be9ddf2910a323d69193c0291723"><div class="ttname"><a href="structutl_1_1details_1_1is__strict__totally__ordered__with__.html#a4687be9ddf2910a323d69193c0291723">utl::details::is_strict_totally_ordered_with_::type</a></div><div class="ttdeci">meta::false_ type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00683">stl.h:683</a></div></div>
  135. <div class="ttc" id="structutl_1_1common__impl_1_1____xref_html_a032704fe2160d375719ade17fd93f91b"><div class="ttname"><a href="structutl_1_1common__impl_1_1____xref.html#a032704fe2160d375719ade17fd93f91b">utl::common_impl::__xref::apply</a></div><div class="ttdeci">U apply</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00179">stl.h:179</a></div></div>
  136. <div class="ttc" id="structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4_html_a6dfb1b1162563a05f62a004de401367e"><div class="ttname"><a href="structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html#a6dfb1b1162563a05f62a004de401367e">utl::common_impl::__copy_cv_&lt; const From &gt;::apply</a></div><div class="ttdeci">const To apply</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00108">stl.h:108</a></div></div>
  137. <div class="ttc" id="namespaceutl_html_a4d76d9e29b830c16ad7dd34e3800a746"><div class="ttname"><a href="namespaceutl.html#a4d76d9e29b830c16ad7dd34e3800a746">utl::common_reference_t</a></div><div class="ttdeci">meta::eval&lt; common_reference&lt; Ts... &gt; &gt; common_reference_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00286">stl.h:286</a></div></div>
  138. <div class="ttc" id="structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836_html_abad429fee19f4f511abfe089fa480404"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html#abad429fee19f4f511abfe089fa480404">utl::common_impl::__common_reference2&lt; T, U, meta::void_t&lt; __basic_common_reference_t&lt; T, U &gt; &gt; &gt;::type</a></div><div class="ttdeci">__basic_common_reference_t&lt; T, U &gt; type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00255">stl.h:255</a></div></div>
  139. <div class="ttc" id="structutl_1_1common__impl_1_1basic__common__reference_html"><div class="ttname"><a href="structutl_1_1common__impl_1_1basic__common__reference.html">utl::common_impl::basic_common_reference</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00209">stl.h:209</a></div></div>
  140. <div class="ttc" id="namespaceutl_html_a1cc37f121888dcc030b8e676b077024f"><div class="ttname"><a href="namespaceutl.html#a1cc37f121888dcc030b8e676b077024f">utl::CommonReference</a></div><div class="ttdeci">_utlConcept CommonReference</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00293">stl.h:293</a></div></div>
  141. <div class="ttc" id="namespaceutl_1_1meta_html_a55511dbaa0adb605ce22dcec11f8d22d"><div class="ttname"><a href="namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d">utl::meta::false_</a></div><div class="ttdeci">bool_&lt; false &gt; false_</div><div class="ttdoc">The type used as a compile-time boolean with false value. </div><div class="ttdef"><b>Definition:</b> <a href="integral_8h_source.html#l00069">integral.h:69</a></div></div>
  142. <div class="ttc" id="namespaceutl_1_1meta_html_aa5a37adba244ff4286f994111c4c02ea"><div class="ttname"><a href="namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea">utl::meta::eval</a></div><div class="ttdeci">typename Tp::type eval</div><div class="ttdoc">Type alias for Tp::type. Used to evaluate/extract return type of metafunctions. </div><div class="ttdef"><b>Definition:</b> <a href="integral_8h_source.html#l00049">integral.h:49</a></div></div>
  143. <div class="ttc" id="utility_2invoke_8h_html"><div class="ttname"><a href="utility_2invoke_8h.html">invoke.h</a></div><div class="ttdoc">invoke() and invoke traits implementation </div></div>
  144. <div class="ttc" id="structutl_1_1details_1_1is__strict__totally__ordered___html"><div class="ttname"><a href="structutl_1_1details_1_1is__strict__totally__ordered__.html">utl::details::is_strict_totally_ordered_</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00627">stl.h:627</a></div></div>
  145. <div class="ttc" id="defines_8h_html"><div class="ttname"><a href="defines_8h.html">defines.h</a></div><div class="ttdoc">Concepts defines. </div></div>
  146. <div class="ttc" id="namespaceutl_html_a0904cc4071a8ea97a1d646dc0a9ca85b"><div class="ttname"><a href="namespaceutl.html#a0904cc4071a8ea97a1d646dc0a9ca85b">utl::DerivedFrom</a></div><div class="ttdeci">_utlConcept DerivedFrom</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00071">stl.h:71</a></div></div>
  147. <div class="ttc" id="structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b_html_a107023c7eaad95d6f6ed8eeb60801d69"><div class="ttname"><a href="structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html#a107023c7eaad95d6f6ed8eeb60801d69">utl::details::is_weakly_equality_comparable_with_&lt; T, U, meta::void_t&lt; meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; T &gt;&gt;()==std::declval&lt; cref_&lt; U &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; T &gt;&gt;() !=std::declval&lt; cref_&lt; U &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; U &gt;&gt;()==std::declval&lt; cref_&lt; T &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; U &gt;&gt;() !=std::declval&lt; cref_&lt; T &gt;&gt;())&gt; &gt; &gt;::type</a></div><div class="ttdeci">meta::true_ type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00572">stl.h:572</a></div></div>
  148. <div class="ttc" id="namespaceutl_html_aa2be0b64c41b392c5264de5f5fee094e"><div class="ttname"><a href="namespaceutl.html#aa2be0b64c41b392c5264de5f5fee094e">utl::EqualityComparableWith</a></div><div class="ttdeci">_utlConcept EqualityComparableWith</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00599">stl.h:599</a></div></div>
  149. <div class="ttc" id="structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4_html_a1066914bb7b2d20c25f9f6b953f40edd"><div class="ttname"><a href="structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html#a1066914bb7b2d20c25f9f6b953f40edd">utl::common_impl::__copy_cv_&lt; volatile From &gt;::apply</a></div><div class="ttdeci">volatile To apply</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00112">stl.h:112</a></div></div>
  150. <div class="ttc" id="namespaceutl_1_1common__impl_html_ae2f3d56c7e5144e099cdf37b19523290"><div class="ttname"><a href="namespaceutl_1_1common__impl.html#ae2f3d56c7e5144e099cdf37b19523290">utl::common_impl::__lref_res</a></div><div class="ttdeci">__cond_res&lt; __copy_cv&lt; T, U &gt; &amp;, __copy_cv&lt; U, T &gt; &amp;&gt; __lref_res</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00140">stl.h:140</a></div></div>
  151. <div class="ttc" id="structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4_html_a45952ba243315d71be48069faeb0aff0"><div class="ttname"><a href="structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html#a45952ba243315d71be48069faeb0aff0">utl::common_impl::__xref&lt; T &amp; &gt;::apply</a></div><div class="ttdeci">std::add_lvalue_reference_t&lt; meta::invoke&lt; __xref&lt; T &gt;, U &gt; &gt; apply</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00196">stl.h:196</a></div></div>
  152. <div class="ttc" id="namespaceutl_html"><div class="ttname"><a href="namespaceutl.html">utl</a></div><div class="ttdoc">STL&amp;#39;s core language concepts. </div><div class="ttdef"><b>Definition:</b> <a href="__1wire_8h_source.html#l00030">_1wire.h:30</a></div></div>
  153. <div class="ttc" id="namespaceutl_html_aae56a019cdd2006c4f07d2e207289195"><div class="ttname"><a href="namespaceutl.html#aae56a019cdd2006c4f07d2e207289195">utl::Predicate</a></div><div class="ttdeci">_utlConcept Predicate</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00759">stl.h:759</a></div></div>
  154. <div class="ttc" id="namespaceutl_html_a7b8e4a26148ed5f2c60e4fd7d41e7e63"><div class="ttname"><a href="namespaceutl.html#a7b8e4a26148ed5f2c60e4fd7d41e7e63">utl::MoveAssignable</a></div><div class="ttdeci">_utlConcept MoveAssignable</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00356">stl.h:356</a></div></div>
  155. <div class="ttc" id="structutl_1_1meta_1_1same___html"><div class="ttname"><a href="structutl_1_1meta_1_1same__.html">utl::meta::same_</a></div><div class="ttdef"><b>Definition:</b> <a href="operations_8h_source.html#l00102">operations.h:102</a></div></div>
  156. <div class="ttc" id="structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4_html_aa0c18f8f497297768174b0d272209f4c"><div class="ttname"><a href="structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html#aa0c18f8f497297768174b0d272209f4c">utl::common_impl::__xref&lt; const T &gt;::apply</a></div><div class="ttdeci">const U apply</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00183">stl.h:183</a></div></div>
  157. <div class="ttc" id="structutl_1_1common__impl_1_1____common__reference2_html"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__reference2.html">utl::common_impl::__common_reference2</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00248">stl.h:248</a></div></div>
  158. <div class="ttc" id="namespaceutl_html_ace9ef6da96e8cf5dc72762cd66240186"><div class="ttname"><a href="namespaceutl.html#ace9ef6da96e8cf5dc72762cd66240186">utl::RegularInvocable</a></div><div class="ttdeci">_utlConcept RegularInvocable</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00756">stl.h:756</a></div></div>
  159. <div class="ttc" id="namespaceutl_html_aacd3a17129d764e8a80c615eb4b88dc3"><div class="ttname"><a href="namespaceutl.html#aacd3a17129d764e8a80c615eb4b88dc3">utl::DefaultConstructible</a></div><div class="ttdeci">_utlConcept DefaultConstructible</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00444">stl.h:444</a></div></div>
  160. <div class="ttc" id="namespaceutl_html_afb0f121b33b44640406b724c4d582b70"><div class="ttname"><a href="namespaceutl.html#afb0f121b33b44640406b724c4d582b70">utl::CopyConstructible</a></div><div class="ttdeci">_utlConcept CopyConstructible</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00459">stl.h:459</a></div></div>
  161. <div class="ttc" id="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196_html_a382d2ef7e9cf4cba7efe589969b64b07"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html#a382d2ef7e9cf4cba7efe589969b64b07">utl::common_impl::__common_ref_&lt; T &amp;, U &amp;&amp;, meta::void_t&lt; __common_ref&lt; T &amp;, const U &amp; &gt;, meta::when&lt; ConvertibleTo&lt; U &amp;&amp;, __common_ref&lt; T &amp;, const U &amp; &gt; &gt; &gt; &gt; &gt;::type</a></div><div class="ttdeci">__common_ref&lt; T &amp;, const U &amp; &gt; type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00174">stl.h:174</a></div></div>
  162. <div class="ttc" id="namespaceutl_html_a7a9d26263662e02fbe3b238da5fd7338"><div class="ttname"><a href="namespaceutl.html#a7a9d26263662e02fbe3b238da5fd7338">utl::remove_cvref_t</a></div><div class="ttdeci">std::remove_cv_t&lt; std::remove_reference_t&lt; T &gt; &gt; remove_cvref_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00042">stl.h:42</a></div></div>
  163. <div class="ttc" id="namespaceutl_1_1details_html_a7f9309206778a6e9f0859c328b4288df"><div class="ttname"><a href="namespaceutl_1_1details.html#a7f9309206778a6e9f0859c328b4288df">utl::details::is_boolean_t</a></div><div class="ttdeci">meta::eval&lt; is_boolean_&lt; B &gt; &gt; is_boolean_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00548">stl.h:548</a></div></div>
  164. <div class="ttc" id="namespaceutl_html_a92a38a3d1638ccad068c24d1242ef63a"><div class="ttname"><a href="namespaceutl.html#a92a38a3d1638ccad068c24d1242ef63a">utl::EqualityComparable</a></div><div class="ttdeci">_utlConcept EqualityComparable</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00596">stl.h:596</a></div></div>
  165. <div class="ttc" id="namespaceutl_html_ada9137016ddccf3339b2f6b3c409cc3c"><div class="ttname"><a href="namespaceutl.html#ada9137016ddccf3339b2f6b3c409cc3c">utl::Integral</a></div><div class="ttdeci">_utlConcept Integral</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00340">stl.h:340</a></div></div>
  166. <div class="ttc" id="namespaceutl_html_a5599d14d1bd008e4c14787d610a2b429"><div class="ttname"><a href="namespaceutl.html#a5599d14d1bd008e4c14787d610a2b429">utl::StrictTotallyOrderedWith</a></div><div class="ttdeci">_utlConcept StrictTotallyOrderedWith</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00706">stl.h:706</a></div></div>
  167. <div class="ttc" id="namespaceutl_html_ae40494acc30f2894c74544f3e9142933"><div class="ttname"><a href="namespaceutl.html#ae40494acc30f2894c74544f3e9142933">utl::invoke_result_t</a></div><div class="ttdeci">meta::eval&lt; invoke_result&lt; _Callable, _Args... &gt; &gt; invoke_result_t</div><div class="ttdoc">invoke_result_t (for C++14) </div><div class="ttdef"><b>Definition:</b> <a href="utility_2invoke_8h_source.html#l00180">invoke.h:180</a></div></div>
  168. <div class="ttc" id="structutl_1_1common__impl_1_1____xref_html"><div class="ttname"><a href="structutl_1_1common__impl_1_1____xref.html">utl::common_impl::__xref</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00178">stl.h:178</a></div></div>
  169. <div class="ttc" id="namespaceutl_html_a2a728f3d477d96f4f719bf62079321cf"><div class="ttname"><a href="namespaceutl.html#a2a728f3d477d96f4f719bf62079321cf">utl::MoveConstructible</a></div><div class="ttdeci">_utlConcept MoveConstructible</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00452">stl.h:452</a></div></div>
  170. <div class="ttc" id="structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434_html_a447a36dc0b2239ee20876c6255033345"><div class="ttname"><a href="structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html#a447a36dc0b2239ee20876c6255033345">utl::details::is_strict_totally_ordered_with_&lt; T, U, meta::void_t&lt; meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; T &gt;&gt;()&lt; std::declval&lt; cref_&lt; U &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; T &gt;&gt;() &gt; std::declval&lt; cref_&lt; U &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; T &gt;&gt;()&lt;=std::declval&lt; cref_&lt; U &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; T &gt;&gt;() &gt;=std::declval&lt; cref_&lt; U &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; U &gt;&gt;()&lt; std::declval&lt; cref_&lt; T &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; U &gt;&gt;() &gt; std::declval&lt; cref_&lt; T &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; U &gt;&gt;()&lt;=std::declval&lt; cref_&lt; T &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; U &gt;&gt;() &gt;=std::declval&lt; cref_&lt; T &gt;&gt;())&gt; &gt; &gt;::type</a></div><div class="ttdeci">meta::true_ type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00697">stl.h:697</a></div></div>
  171. <div class="ttc" id="structutl_1_1common__impl_1_1common__reference_html"><div class="ttname"><a href="structutl_1_1common__impl_1_1common__reference.html">utl::common_impl::common_reference</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00222">stl.h:222</a></div></div>
  172. <div class="ttc" id="namespaceutl_html_aa3f95fc48a94b2fae3c2959b7c024998"><div class="ttname"><a href="namespaceutl.html#aa3f95fc48a94b2fae3c2959b7c024998">utl::_ref_t</a></div><div class="ttdeci">std::add_lvalue_reference_t&lt; T &gt; _ref_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00048">stl.h:48</a></div></div>
  173. <div class="ttc" id="namespaceutl_html_afc25cb525eb29162042c21238f28f26e"><div class="ttname"><a href="namespaceutl.html#afc25cb525eb29162042c21238f28f26e">utl::Movable</a></div><div class="ttdeci">_utlConcept Movable</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00469">stl.h:469</a></div></div>
  174. <div class="ttc" id="namespaceutl_html_a7fb6eaf8fc1c5d65755c8c96a7a9b61f"><div class="ttname"><a href="namespaceutl.html#a7fb6eaf8fc1c5d65755c8c96a7a9b61f">utl::UnsignedIntegral</a></div><div class="ttdeci">_utlConcept UnsignedIntegral</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00352">stl.h:352</a></div></div>
  175. <div class="ttc" id="namespaceutl_1_1common__impl_html_a312c9f3e740103f831a49624097948f5"><div class="ttname"><a href="namespaceutl_1_1common__impl.html#a312c9f3e740103f831a49624097948f5">utl::common_impl::__rref_res</a></div><div class="ttdeci">std::remove_reference_t&lt; R &gt; &amp;&amp; __rref_res</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00144">stl.h:144</a></div></div>
  176. <div class="ttc" id="namespaceutl_1_1common__impl_html_adc4b085a84c0355fda341475074ff230"><div class="ttname"><a href="namespaceutl_1_1common__impl.html#adc4b085a84c0355fda341475074ff230">utl::common_impl::common_reference_t</a></div><div class="ttdeci">meta::eval&lt; common_reference&lt; Ts... &gt; &gt; common_reference_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00227">stl.h:227</a></div></div>
  177. <div class="ttc" id="namespaceutl_html_a38e00606b4b45a2ac59fa4576b4498c6"><div class="ttname"><a href="namespaceutl.html#a38e00606b4b45a2ac59fa4576b4498c6">utl::Boolean</a></div><div class="ttdeci">_utlConcept Boolean</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00551">stl.h:551</a></div></div>
  178. <div class="ttc" id="namespaceutl_1_1common__impl_html_aed700217ef1518692242c1059f3dff27"><div class="ttname"><a href="namespaceutl_1_1common__impl.html#aed700217ef1518692242c1059f3dff27">utl::common_impl::__copy_cv</a></div><div class="ttdeci">meta::invoke&lt; __copy_cv_&lt; From &gt;, To &gt; __copy_cv</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00119">stl.h:119</a></div></div>
  179. <div class="ttc" id="structutl_1_1common__impl_1_1____common__reference3_html"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__reference3.html">utl::common_impl::__common_reference3</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00237">stl.h:237</a></div></div>
  180. <div class="ttc" id="namespaceutl_html_a3accaa436a17248b4214baebc582b2f6"><div class="ttname"><a href="namespaceutl.html#a3accaa436a17248b4214baebc582b2f6">utl::Regular</a></div><div class="ttdeci">_utlConcept Regular</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00723">stl.h:723</a></div></div>
  181. <div class="ttc" id="namespaceutl_html_a2a3ef7a9c788ffc1291ce15d2e5869bf"><div class="ttname"><a href="namespaceutl.html#a2a3ef7a9c788ffc1291ce15d2e5869bf">utl::Constructible</a></div><div class="ttdeci">_utlConcept Constructible</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00438">stl.h:438</a></div></div>
  182. <div class="ttc" id="namespaceutl_1_1details_html_a499205eb8ca7f46d1e417a27f52442b8"><div class="ttname"><a href="namespaceutl_1_1details.html#a499205eb8ca7f46d1e417a27f52442b8">utl::details::is_weakly_equality_comparable_with_t</a></div><div class="ttdeci">meta::eval&lt; is_weakly_equality_comparable_with_&lt; T, U &gt; &gt; is_weakly_equality_comparable_with_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00578">stl.h:578</a></div></div>
  183. <div class="ttc" id="structutl_1_1common__impl_1_1____copy__cv___html"><div class="ttname"><a href="structutl_1_1common__impl_1_1____copy__cv__.html">utl::common_impl::__copy_cv_</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00102">stl.h:102</a></div></div>
  184. <div class="ttc" id="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f_html_a9818dd472dbf7e5819a37c772d0566d2"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html#a9818dd472dbf7e5819a37c772d0566d2">utl::common_impl::__common_ref_&lt; T &amp;, U &amp;, meta::void_t&lt; __lref_res&lt; T, U &gt;, meta::when&lt; std::is_reference&lt; __lref_res&lt; T, U &gt; &gt;::value &gt; &gt; &gt;::type</a></div><div class="ttdeci">__lref_res&lt; T, U &gt; type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00150">stl.h:150</a></div></div>
  185. <div class="ttc" id="namespaceutl_1_1meta_html_a77630cd8adc01f7193f6cb834313d90f"><div class="ttname"><a href="namespaceutl_1_1meta.html#a77630cd8adc01f7193f6cb834313d90f">utl::meta::invoke</a></div><div class="ttdeci">typename Fn::template apply&lt; Args... &gt; invoke</div><div class="ttdef"><b>Definition:</b> <a href="meta_2invoke_8h_source.html#l00081">invoke.h:81</a></div></div>
  186. <div class="ttc" id="namespaceutl_1_1details_html_acd9fac18316e44b7abd920686de886f0"><div class="ttname"><a href="namespaceutl_1_1details.html#acd9fac18316e44b7abd920686de886f0">utl::details::is_strict_totally_ordered_with_t</a></div><div class="ttdeci">meta::eval&lt; is_strict_totally_ordered_with_&lt; T, U &gt; &gt; is_strict_totally_ordered_with_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00703">stl.h:703</a></div></div>
  187. <div class="ttc" id="structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491_html_abfb3ea1ef62c31310d992fde67f92900"><div class="ttname"><a href="structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html#abfb3ea1ef62c31310d992fde67f92900">utl::details::is_boolean_&lt; B, meta::void_t&lt; meta::use_if_same_t&lt; bool, decltype(!std::declval&lt; cref_&lt; B &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; B &gt;&gt;()==std::declval&lt; cref_&lt; B &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; B &gt;&gt;() !=std::declval&lt; cref_&lt; B &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; B &gt;&gt;() &amp;&amp;std::declval&lt; cref_&lt; B &gt;&gt;())&gt;, meta::use_if_same_t&lt; bool, decltype(std::declval&lt; cref_&lt; B &gt;&gt;()||std::declval&lt; cref_&lt; B &gt;&gt;())&gt; &gt; &gt;::type</a></div><div class="ttdeci">meta::true_ type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00542">stl.h:542</a></div></div>
  188. <div class="ttc" id="namespaceutl_html_ae0f873b4883af7cc18cb23dd2810f4e6"><div class="ttname"><a href="namespaceutl.html#ae0f873b4883af7cc18cb23dd2810f4e6">utl::swap</a></div><div class="ttdeci">void swap(array&lt; _Tp, _Nm &gt; &amp;lhs, array&lt; _Tp, _Nm &gt; &amp;rhs) noexcept(noexcept(lhs.swap(rhs)))</div><div class="ttdef"><b>Definition:</b> <a href="array_8h_source.html#l00214">array.h:214</a></div></div>
  189. <div class="ttc" id="namespaceutl_1_1common__impl_html_a3bbe5eb74a1c6017f60e3034519d69d6"><div class="ttname"><a href="namespaceutl_1_1common__impl.html#a3bbe5eb74a1c6017f60e3034519d69d6">utl::common_impl::__basic_common_reference_t</a></div><div class="ttdeci">meta::eval&lt; basic_common_reference&lt; remove_cvref_t&lt; T &gt;, remove_cvref_t&lt; U &gt;, __xref&lt; T &gt;::template apply, __xref&lt; U &gt;::template apply &gt; &gt; __basic_common_reference_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00219">stl.h:219</a></div></div>
  190. <div class="ttc" id="namespaceutl_html_a6d1e9b4853dd005ddaf61a79333cab98"><div class="ttname"><a href="namespaceutl.html#a6d1e9b4853dd005ddaf61a79333cab98">utl::Relation</a></div><div class="ttdeci">_utlConcept Relation</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00764">stl.h:764</a></div></div>
  191. <div class="ttc" id="structutl_1_1details_1_1is__strict__totally__ordered__with___html"><div class="ttname"><a href="structutl_1_1details_1_1is__strict__totally__ordered__with__.html">utl::details::is_strict_totally_ordered_with_</a></div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00682">stl.h:682</a></div></div>
  192. <div class="ttc" id="namespaceutl_html_a41733496c30138efd3d88f13d9382aad"><div class="ttname"><a href="namespaceutl.html#a41733496c30138efd3d88f13d9382aad">utl::Arithmetic</a></div><div class="ttdeci">_utlConcept Arithmetic</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00736">stl.h:736</a></div></div>
  193. <div class="ttc" id="structutl_1_1common__impl_1_1common__reference_3_01_t_01_4_html_ad228404ea08fbb8929dc7792a803c5a4"><div class="ttname"><a href="structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html#ad228404ea08fbb8929dc7792a803c5a4">utl::common_impl::common_reference&lt; T &gt;::type</a></div><div class="ttdeci">T type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00232">stl.h:232</a></div></div>
  194. <div class="ttc" id="namespaceutl_1_1meta_html_a181d79db46b10170529e85b907ed3dc7"><div class="ttname"><a href="namespaceutl_1_1meta.html#a181d79db46b10170529e85b907ed3dc7">utl::meta::when</a></div><div class="ttdeci">eval&lt; detail::when_&lt; If &gt; &gt; when</div><div class="ttdoc">Well formed only if If is true. </div><div class="ttdef"><b>Definition:</b> <a href="sfinae_8h_source.html#l00046">sfinae.h:46</a></div></div>
  195. <div class="ttc" id="structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c_html_af8297c9aa25bfb27c58f0f58722a0d28"><div class="ttname"><a href="structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html#af8297c9aa25bfb27c58f0f58722a0d28">utl::common_impl::__common_reference&lt; T, U, meta::when&lt; std::is_reference&lt; T &gt;::value &amp;&amp;std::is_reference&lt; U &gt;::value &gt; &gt;::type</a></div><div class="ttdeci">__common_ref&lt; T, U &gt; type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00265">stl.h:265</a></div></div>
  196. <div class="ttc" id="structutl_1_1details_1_1is__weakly__equality__comparable__with___html_ab700b64203b780a4e35e0b9362224da4"><div class="ttname"><a href="structutl_1_1details_1_1is__weakly__equality__comparable__with__.html#ab700b64203b780a4e35e0b9362224da4">utl::details::is_weakly_equality_comparable_with_::type</a></div><div class="ttdeci">meta::false_ type</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00562">stl.h:562</a></div></div>
  197. <div class="ttc" id="namespaceutl_html_a667b758d906c466d1b8a878a45750bf1"><div class="ttname"><a href="namespaceutl.html#a667b758d906c466d1b8a878a45750bf1">utl::SignedIntegral</a></div><div class="ttdeci">_utlConcept SignedIntegral</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00346">stl.h:346</a></div></div>
  198. <div class="ttc" id="impl_8h_html"><div class="ttname"><a href="impl_8h.html">impl.h</a></div><div class="ttdoc">Implementation detail main forward header. </div></div>
  199. <div class="ttc" id="structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4_html_affd4de84c60ada7d645b9f4d66f17b25"><div class="ttname"><a href="structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html#affd4de84c60ada7d645b9f4d66f17b25">utl::common_impl::__xref&lt; volatile T &gt;::apply</a></div><div class="ttdeci">volatile U apply</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00187">stl.h:187</a></div></div>
  200. <div class="ttc" id="structutl_1_1is__invocable_html"><div class="ttname"><a href="structutl_1_1is__invocable.html">utl::is_invocable</a></div><div class="ttdoc">std::is_invocable trait for C++11 </div><div class="ttdef"><b>Definition:</b> <a href="utility_2invoke_8h_source.html#l00130">invoke.h:130</a></div></div>
  201. <div class="ttc" id="namespaceutl_html_ab437a6d3a1f420b44e01378ae37fcb24"><div class="ttname"><a href="namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24">utl::is_swappable_with</a></div><div class="ttdeci">std::is_swappable_with is_swappable_with</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00408">stl.h:408</a></div></div>
  202. </div><!-- fragment --></div><!-- contents -->
  203. </div><!-- doc-content -->
  204. <!-- start footer part -->
  205. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  206. <ul>
  207. <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_82754f54d9380477ef02477185c1f103.html">utl</a></li><li class="navelem"><a class="el" href="dir_1de759a74730efb26e16b92a33818a86.html">concepts</a></li><li class="navelem"><a class="el" href="stl_8h.html">stl.h</a></li>
  208. <li class="footer">Generated by
  209. <a href="http://www.doxygen.org/index.html">
  210. <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
  211. </ul>
  212. </div>
  213. </body>
  214. </html>