Skip to content

Commit 32a18c5

Browse files
committed
Deploying to gh-pages from @ fc77f77 🚀
1 parent 3e31fe1 commit 32a18c5

File tree

1 file changed

+56
-51
lines changed

1 file changed

+56
-51
lines changed

product__type_8hpp_source.html

Lines changed: 56 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -195,58 +195,63 @@
195195
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> }</div>
196196
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Fun, ::std::size_t... I&gt;</div>
197197
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> apply_elements(::std::index_sequence&lt;I...&gt;, Fun&amp;&amp; fun) -&gt; <span class="keyword">decltype</span>(<span class="keyword">auto</span>) {</div>
198-
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> return ::std::forward&lt;Fun&gt;(fun)(this-&gt;<span class="keyword">template</span> get&lt;I&gt;()...);</div>
199-
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> }</div>
200-
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Fun&gt;</div>
201-
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> apply(Fun&amp;&amp; fun) -&gt; <span class="keyword">decltype</span>(<span class="keyword">auto</span>) {</div>
202-
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordflow">return</span> apply_elements(::std::index_sequence_for&lt;T...&gt;{}, ::std::forward&lt;Fun&gt;(fun));</div>
203-
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> }</div>
204-
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span>};</div>
205-
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... T&gt;</div>
206-
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span>product_type(T&amp;&amp;...) -&gt; product_type&lt;::std::decay_t&lt;T&gt;...&gt;;</div>
207-
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> </div>
208-
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
209-
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="keyword">constexpr</span> <span class="keyword">auto</span> is_product_type(<span class="keyword">const</span> T&amp;) -&gt; ::std::false_type {</div>
210-
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordflow">return</span> {};</div>
211-
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span>}</div>
212-
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... T&gt;</div>
213-
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="keyword">constexpr</span> <span class="keyword">auto</span> is_product_type(const ::beman::execution::detail::product_type&lt;T...&gt;&amp;) -&gt; ::std::true_type {</div>
214-
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordflow">return</span> {};</div>
215-
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span>}</div>
216-
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
217-
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="keyword">template</span> &lt;::std::size_t Start, <span class="keyword">typename</span> Fun, <span class="keyword">typename</span> Tuple, ::std::size_t... I&gt;</div>
218-
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="keyword">constexpr</span> <span class="keyword">auto</span> sub_apply_helper(Fun&amp;&amp; fun, Tuple&amp;&amp; tuple, ::std::index_sequence&lt;I...&gt;) -&gt; <span class="keyword">decltype</span>(<span class="keyword">auto</span>) {</div>
219-
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// NOLINTNEXTLINE(bugprone-use-after-move,hicpp-invalid-access-moved)</span></div>
220-
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> return ::std::forward&lt;Fun&gt;(fun)(::std::forward&lt;Tuple&gt;(tuple).template get&lt;I + Start&gt;()...);</div>
221-
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span>}</div>
222-
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
223-
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="keyword">template</span> &lt;::std::<span class="keywordtype">size_t</span> Start, <span class="keyword">typename</span> Fun, <span class="keyword">typename</span> Tuple&gt;</div>
224-
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="keyword">constexpr</span> <span class="keyword">auto</span> sub_apply(Fun&amp;&amp; fun, Tuple&amp;&amp; tuple) -&gt; <span class="keyword">decltype</span>(<span class="keyword">auto</span>) {</div>
225-
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> constexpr ::std::size_t TSize{::std::tuple_size_v&lt;::std::remove_cvref_t&lt;Tuple&gt;&gt;};</div>
226-
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keyword">static_assert</span>(Start &lt;= TSize);</div>
227-
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keywordflow">return</span> sub_apply_helper&lt;Start&gt;(</div>
228-
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> ::std::forward&lt;Fun&gt;(fun), ::std::forward&lt;Tuple&gt;(tuple), ::std::make_index_sequence&lt;TSize - Start&gt;());</div>
229-
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span>}</div>
230-
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
231-
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span>} <span class="comment">// namespace beman::execution::detail</span></div>
232-
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
233-
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="keyword">namespace </span>std {</div>
234-
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
235-
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> requires ::beman::execution::detail::is_product_type_c&lt;T&gt;</div>
236-
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="structstd_1_1tuple__size_3_01T_01_4.html"> 134</a></span><span class="keyword">struct </span>tuple_size&lt;T&gt; : ::std::integral_constant&lt;std::size_t, T::size()&gt; {};</div>
198+
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor">#if 0</span></div>
199+
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> return ::std::forward&lt;Fun&gt;(fun)(this-&gt;<span class="keyword">template</span> get&lt;I&gt;()...);</div>
200+
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="preprocessor">#else</span></div>
201+
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="comment">//-dk:TODO provide rvalue, lvalue, const lvalue overloads?</span></div>
202+
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> return ::std::forward&lt;Fun&gt;(fun)(std::move(this-&gt;<span class="keyword">template</span> get&lt;I&gt;())...);</div>
203+
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="preprocessor">#endif</span></div>
204+
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> }</div>
205+
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Fun&gt;</div>
206+
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> apply(Fun&amp;&amp; fun) -&gt; <span class="keyword">decltype</span>(<span class="keyword">auto</span>) {</div>
207+
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">return</span> apply_elements(::std::index_sequence_for&lt;T...&gt;{}, ::std::forward&lt;Fun&gt;(fun));</div>
208+
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
209+
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span>};</div>
210+
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... T&gt;</div>
211+
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span>product_type(T&amp;&amp;...) -&gt; product_type&lt;::std::decay_t&lt;T&gt;...&gt;;</div>
212+
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
213+
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
214+
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="keyword">constexpr</span> <span class="keyword">auto</span> is_product_type(<span class="keyword">const</span> T&amp;) -&gt; ::std::false_type {</div>
215+
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">return</span> {};</div>
216+
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span>}</div>
217+
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span>... T&gt;</div>
218+
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="keyword">constexpr</span> <span class="keyword">auto</span> is_product_type(const ::beman::execution::detail::product_type&lt;T...&gt;&amp;) -&gt; ::std::true_type {</div>
219+
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordflow">return</span> {};</div>
220+
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span>}</div>
221+
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
222+
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="keyword">template</span> &lt;::std::size_t Start, <span class="keyword">typename</span> Fun, <span class="keyword">typename</span> Tuple, ::std::size_t... I&gt;</div>
223+
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="keyword">constexpr</span> <span class="keyword">auto</span> sub_apply_helper(Fun&amp;&amp; fun, Tuple&amp;&amp; tuple, ::std::index_sequence&lt;I...&gt;) -&gt; <span class="keyword">decltype</span>(<span class="keyword">auto</span>) {</div>
224+
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// NOLINTNEXTLINE(bugprone-use-after-move,hicpp-invalid-access-moved)</span></div>
225+
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> return ::std::forward&lt;Fun&gt;(fun)(::std::forward&lt;Tuple&gt;(tuple).template get&lt;I + Start&gt;()...);</div>
226+
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span>}</div>
227+
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
228+
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="keyword">template</span> &lt;::std::<span class="keywordtype">size_t</span> Start, <span class="keyword">typename</span> Fun, <span class="keyword">typename</span> Tuple&gt;</div>
229+
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="keyword">constexpr</span> <span class="keyword">auto</span> sub_apply(Fun&amp;&amp; fun, Tuple&amp;&amp; tuple) -&gt; <span class="keyword">decltype</span>(<span class="keyword">auto</span>) {</div>
230+
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> constexpr ::std::size_t TSize{::std::tuple_size_v&lt;::std::remove_cvref_t&lt;Tuple&gt;&gt;};</div>
231+
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keyword">static_assert</span>(Start &lt;= TSize);</div>
232+
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keywordflow">return</span> sub_apply_helper&lt;Start&gt;(</div>
233+
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> ::std::forward&lt;Fun&gt;(fun), ::std::forward&lt;Tuple&gt;(tuple), ::std::make_index_sequence&lt;TSize - Start&gt;());</div>
234+
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span>}</div>
235+
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
236+
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span>} <span class="comment">// namespace beman::execution::detail</span></div>
237237
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
238-
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="keyword">template</span> &lt;::std::<span class="keywordtype">size_t</span> I, <span class="keyword">typename</span> T&gt;</div>
239-
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> requires ::beman::execution::detail::is_product_type_c&lt;T&gt;</div>
240-
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="structstd_1_1tuple__element_3_01I_00_01T_01_4.html"> 138</a></span><span class="keyword">struct </span>tuple_element&lt;I, T&gt; {</div>
241-
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keyword">using </span>type = ::std::decay_t&lt;decltype(::std::declval&lt;T&gt;().template get&lt;I&gt;())&gt;;</div>
242-
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span>};</div>
243-
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span>} <span class="comment">// namespace std</span></div>
244-
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
245-
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment">// ----------------------------------------------------------------------------</span></div>
246-
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
247-
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="preprocessor">#include &lt;beman/execution/detail/suppress_pop.hpp&gt;</span></div>
248-
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
249-
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="preprocessor">#endif</span></div>
238+
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="keyword">namespace </span>std {</div>
239+
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
240+
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> requires ::beman::execution::detail::is_product_type_c&lt;T&gt;</div>
241+
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"><a class="line" href="structstd_1_1tuple__size_3_01T_01_4.html"> 139</a></span><span class="keyword">struct </span>tuple_size&lt;T&gt; : ::std::integral_constant&lt;std::size_t, T::size()&gt; {};</div>
242+
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
243+
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="keyword">template</span> &lt;::std::<span class="keywordtype">size_t</span> I, <span class="keyword">typename</span> T&gt;</div>
244+
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> requires ::beman::execution::detail::is_product_type_c&lt;T&gt;</div>
245+
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"><a class="line" href="structstd_1_1tuple__element_3_01I_00_01T_01_4.html"> 143</a></span><span class="keyword">struct </span>tuple_element&lt;I, T&gt; {</div>
246+
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">using </span>type = ::std::decay_t&lt;decltype(::std::declval&lt;T&gt;().template get&lt;I&gt;())&gt;;</div>
247+
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span>};</div>
248+
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span>} <span class="comment">// namespace std</span></div>
249+
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
250+
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment">// ----------------------------------------------------------------------------</span></div>
251+
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
252+
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="preprocessor">#include &lt;beman/execution/detail/suppress_pop.hpp&gt;</span></div>
253+
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
254+
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="preprocessor">#endif</span></div>
250255
</div><!-- fragment --></div><!-- contents -->
251256
</div><!-- doc-content -->
252257
<!-- start footer part -->

0 commit comments

Comments
 (0)