<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Lambda Function on Frank Bi</title><link>https://wentaobi.github.io/biwentao/tags/lambda-function/</link><description>Recent content in Lambda Function on Frank Bi</description><image><url>https://wentaobi.github.io/biwentao/images/forge-v2-compat.svg</url><link>https://wentaobi.github.io/biwentao/images/forge-v2-compat.svg</link></image><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Wed, 19 Feb 2014 00:00:00 +0000</lastBuildDate><atom:link href="https://wentaobi.github.io/biwentao/tags/lambda-function/feed.xml" rel="self" type="application/rss+xml"/><item><title>Modern C++ 100 Questions | 02 User defined literals _f</title><link>https://wentaobi.github.io/biwentao/study/02_user_defined-literals_f/</link><pubDate>Wed, 19 Feb 2014 00:00:00 +0000</pubDate><guid>https://wentaobi.github.io/biwentao/study/02_user_defined-literals_f/</guid><description>User defined literals _f</description><content:encoded><![CDATA[<p>This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.</p>
<h2 id="02-user-defined-literals-_f"><code>02</code> User defined literals _f</h2>
<p><strong>Requirements</strong>：</p>
<ol>
<li>Please don&rsquo;t change <code>main</code> function.</li>
<li>Please implement your function/code to get <strong>Expected results</strong>.</li>
</ol>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="kt">int</span> <span class="nf">main</span><span class="p">(){</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&#34;乐 :{} *</span><span class="se">\n</span><span class="s">&#34;</span><span class="n">_f</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&#34;乐 :{0} {0} *</span><span class="se">\n</span><span class="s">&#34;</span><span class="n">_f</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&#34;乐 :{:b} *</span><span class="se">\n</span><span class="s">&#34;</span><span class="n">_f</span><span class="p">(</span><span class="mb">0b01010101</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&#34;{:*&lt;10}&#34;</span><span class="n">_f</span><span class="p">(</span><span class="s">&#34;卢瑟&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="kt">int</span> <span class="n">n</span><span class="p">{};</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cin</span> <span class="o">&gt;&gt;</span> <span class="n">n</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">&#34;π：{:.{}f}</span><span class="se">\n</span><span class="s">&#34;</span><span class="n">_f</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">numbers</span><span class="o">::</span><span class="n">pi_v</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="expected-results">Expected results</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">乐 :5 *
</span></span><span class="line"><span class="cl">乐 :5 5 *
</span></span><span class="line"><span class="cl">乐 :1010101 *
</span></span><span class="line"><span class="cl">卢瑟******
</span></span><span class="line"><span class="cl">6
</span></span><span class="line"><span class="cl">π：3.141593
</span></span></code></pre></div><h3 id="suggested-environments">Suggested environments</h3>
<p><a href="https://godbolt.org/">Compiler explorer</a>, please add <strong>&ndash;std=c++20</strong> to the compilation options.</p>
<h3 id="my-implementation">My implementation</h3>
<p><a href="https://zhuanlan.zhihu.com/p/679162013">Reference code</a>, please use browser to translate page from Chinese to English if necessary.</p>]]></content:encoded></item><item><title>Modern C++ 100 Questions | 04 Class template different types of instantiation</title><link>https://wentaobi.github.io/biwentao/study/04_class_template_different_types_of_instantiation/</link><pubDate>Wed, 19 Feb 2014 00:00:00 +0000</pubDate><guid>https://wentaobi.github.io/biwentao/study/04_class_template_different_types_of_instantiation/</guid><description>Implement pipe operator</description><content:encoded><![CDATA[<p>This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.</p>
<h2 id="04-class-template-different-types-of-instantiation"><code>04</code> Class template different types of instantiation</h2>
<p><strong>Requirements</strong>：</p>
<ol>
<li>Please don&rsquo;t change <code>main</code> function.</li>
<li>Please implement your function/code to get <strong>Expected results</strong>.</li>
</ol>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="cp">#include&lt;iostream&gt;
</span></span></span><span class="line"><span class="cl"><span class="cp"></span><span class="k">class</span> <span class="nc">ComponentBase</span><span class="p">{</span>
</span></span><span class="line"><span class="cl"><span class="k">protected</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">    <span class="k">static</span> <span class="kr">inline</span> <span class="n">std</span><span class="o">::</span><span class="n">size_t</span> <span class="n">component_type_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">Component</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ComponentBase</span><span class="p">{</span>
</span></span><span class="line"><span class="cl"><span class="k">public</span><span class="o">:</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// todo...
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="c1">// Change the current template class in any way so that for any type X, if it inherits from Component
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>
</span></span><span class="line"><span class="cl">    <span class="c1">// Then X::component type id() will get a unique id of type size t (different values should be returned for different X types)值应不同）
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>    <span class="c1">// Requirements: std::type info cannot be used (the typeid keyword is disabled), and all ids are consecutive starting from 0
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">A</span> <span class="o">:</span> <span class="k">public</span> <span class="n">Component</span><span class="o">&lt;</span><span class="n">A</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">{};</span>
</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">B</span> <span class="o">:</span> <span class="k">public</span> <span class="n">Component</span><span class="o">&lt;</span><span class="n">B</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">{};</span>
</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">C</span> <span class="o">:</span> <span class="k">public</span> <span class="n">Component</span><span class="o">&lt;</span><span class="n">C</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="p">{};</span>
</span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">A</span><span class="o">::</span><span class="n">component_type_id</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">B</span><span class="o">::</span><span class="n">component_type_id</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">B</span><span class="o">::</span><span class="n">component_type_id</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">A</span><span class="o">::</span><span class="n">component_type_id</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">A</span><span class="o">::</span><span class="n">component_type_id</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">C</span><span class="o">::</span><span class="n">component_type_id</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="expected-results">Expected results</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">0
</span></span><span class="line"><span class="cl">1
</span></span><span class="line"><span class="cl">1
</span></span><span class="line"><span class="cl">0
</span></span><span class="line"><span class="cl">0
</span></span><span class="line"><span class="cl">2
</span></span></code></pre></div><h3 id="suggested-environments">Suggested environments</h3>
<p><a href="https://godbolt.org/">Compiler explorer</a>, please add <strong>&ndash;std=c++20</strong> to the compilation options.</p>
<h3 id="my-implementation">My implementation</h3>
<p><a href="https://zhuanlan.zhihu.com/p/681510902">Reference code</a>, please use browser to translate page from Chinese to English if necessary.</p>]]></content:encoded></item><item><title>Modern C++ 100 Questions | 05 Implement scope_guard</title><link>https://wentaobi.github.io/biwentao/study/05_implement_scope_guard/</link><pubDate>Wed, 19 Feb 2014 00:00:00 +0000</pubDate><guid>https://wentaobi.github.io/biwentao/study/05_implement_scope_guard/</guid><description>Implement scope_guard</description><content:encoded><![CDATA[<p>This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.</p>
<h2 id="01-implement-pipe-operator"><code>01</code> Implement pipe operator</h2>
<p><strong>Requirements</strong>：</p>
<ol>
<li>Please don&rsquo;t change <code>main</code> function.</li>
<li>Please implement your function/code to get <strong>Expected results</strong>.</li>
</ol>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span><span class="lnt">51
</span><span class="lnt">52
</span><span class="lnt">53
</span><span class="lnt">54
</span><span class="lnt">55
</span><span class="lnt">56
</span><span class="lnt">57
</span><span class="lnt">58
</span><span class="lnt">59
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;cstdio&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;cassert&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;stdexcept&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;functional&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl"><span class="k">struct</span> <span class="nc">X</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">X</span><span class="p">()</span> <span class="p">{</span> <span class="n">puts</span><span class="p">(</span><span class="s">&#34;X()&#34;</span><span class="p">);</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="n">X</span><span class="p">(</span><span class="k">const</span> <span class="n">X</span><span class="o">&amp;</span><span class="p">)</span> <span class="p">{</span> <span class="n">puts</span><span class="p">(</span><span class="s">&#34;X(const X&amp;)&#34;</span><span class="p">);</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="n">X</span><span class="p">(</span><span class="n">X</span><span class="o">&amp;&amp;</span><span class="p">)</span> <span class="k">noexcept</span> <span class="p">{</span> <span class="n">puts</span><span class="p">(</span><span class="s">&#34;X(X&amp;&amp;)&#34;</span><span class="p">);</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="o">~</span><span class="n">X</span><span class="p">()</span> <span class="p">{</span> <span class="n">puts</span><span class="p">(</span><span class="s">&#34;~X()&#34;</span><span class="p">);</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// scope_guard的作用之一，是让各种C风格指针接口作为局部变量时也能得到RAII支持
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="c1">// 这也是本题的基础要求
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="n">FILE</span> <span class="o">*</span> <span class="n">fp</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="k">try</span><span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="n">fp</span> <span class="o">=</span> <span class="n">fopen</span><span class="p">(</span><span class="s">&#34;test.txt&#34;</span><span class="p">,</span><span class="s">&#34;a&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">            <span class="k">auto</span> <span class="n">guard</span> <span class="o">=</span> <span class="n">scope_guard</span><span class="p">([</span><span class="o">&amp;</span><span class="p">]</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="n">fclose</span><span class="p">(</span><span class="n">fp</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">                <span class="n">fp</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">            <span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">runtime_error</span><span class="p">{</span><span class="s">&#34;Test&#34;</span><span class="p">};</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">exception</span> <span class="o">&amp;</span> <span class="n">e</span><span class="p">){</span>
</span></span><span class="line"><span class="cl">            <span class="n">puts</span><span class="p">(</span><span class="n">e</span><span class="p">.</span><span class="n">what</span><span class="p">());</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="n">assert</span><span class="p">(</span><span class="n">fp</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="n">puts</span><span class="p">(</span><span class="s">&#34;----------&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// 附加要求1，支持函数对象调用
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="k">struct</span> <span class="nc">Test</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="kt">void</span> <span class="k">operator</span><span class="p">()(</span><span class="n">X</span><span class="o">*</span> <span class="n">x</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="k">delete</span> <span class="n">x</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span> <span class="n">t</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">        <span class="k">auto</span> <span class="n">x</span> <span class="o">=</span> <span class="k">new</span> <span class="n">X</span><span class="p">{};</span>
</span></span><span class="line"><span class="cl">        <span class="k">auto</span> <span class="n">guard</span> <span class="o">=</span> <span class="n">scope_guard</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="n">x</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="n">puts</span><span class="p">(</span><span class="s">&#34;----------&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// 附加要求2，支持成员函数和std::ref
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>        <span class="k">auto</span> <span class="n">x</span> <span class="o">=</span> <span class="k">new</span> <span class="n">X</span><span class="p">{};</span>
</span></span><span class="line"><span class="cl">        <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="k">struct</span> <span class="nc">Test</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="n">X</span><span class="o">*&amp;</span> <span class="n">px</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="k">delete</span> <span class="n">px</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                    <span class="n">px</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span> <span class="n">t</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">            <span class="k">auto</span> <span class="n">guard</span> <span class="o">=</span> <span class="n">scope_guard</span><span class="p">{</span><span class="o">&amp;</span><span class="n">Test</span><span class="o">::</span><span class="n">f</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">t</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">ref</span><span class="p">(</span><span class="n">x</span><span class="p">)};</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="n">assert</span><span class="p">(</span><span class="n">x</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="expected-results">Expected results</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Test
</span></span><span class="line"><span class="cl">----------
</span></span><span class="line"><span class="cl">X()
</span></span><span class="line"><span class="cl">~X()
</span></span><span class="line"><span class="cl">----------
</span></span><span class="line"><span class="cl">X()
</span></span><span class="line"><span class="cl">~X()
</span></span></code></pre></div><h3 id="suggested-environments">Suggested environments</h3>
<p><a href="https://godbolt.org/">Compiler explorer</a>, please add <strong>&ndash;std=c++20</strong> to the compilation options.</p>
<h3 id="my-implementation">My implementation</h3>
<p><a href="https://zhuanlan.zhihu.com/p/681521425">Reference code</a>, please use browser to translate page from Chinese to English if necessary.</p>]]></content:encoded></item><item><title>Modern C++ 100 Questions | 01 Pipe operator.</title><link>https://wentaobi.github.io/biwentao/study/01_pipe_operator/</link><pubDate>Sat, 25 Jan 2014 00:00:00 +0000</pubDate><guid>https://wentaobi.github.io/biwentao/study/01_pipe_operator/</guid><description>Implement pipe operator</description><content:encoded><![CDATA[<p>This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.</p>
<h2 id="01-implement-pipe-operator"><code>01</code> Implement pipe operator</h2>
<p><strong>Requirements</strong>：</p>
<ol>
<li>Please don&rsquo;t change <code>main</code> function.</li>
<li>Please implement your function/code to get <strong>Expected results</strong>.</li>
</ol>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="kt">int</span> <span class="nf">main</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">vector</span> <span class="n">v</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">};</span>
</span></span><span class="line"><span class="cl">    <span class="n">std</span><span class="o">::</span><span class="n">function</span> <span class="n">f</span> <span class="p">{[](</span><span class="k">const</span> <span class="kt">int</span><span class="o">&amp;</span> <span class="n">i</span><span class="p">)</span> <span class="p">{</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="n">i</span> <span class="o">&lt;&lt;</span> <span class="sc">&#39; &#39;</span><span class="p">;</span> <span class="p">}</span> <span class="p">};</span>
</span></span><span class="line"><span class="cl">    <span class="k">auto</span> <span class="n">f2</span> <span class="o">=</span> <span class="p">[](</span><span class="kt">int</span><span class="o">&amp;</span> <span class="n">i</span><span class="p">)</span> <span class="p">{</span><span class="n">i</span> <span class="o">*=</span> <span class="n">i</span><span class="p">;</span> <span class="p">};</span>
</span></span><span class="line"><span class="cl">    <span class="n">v</span> <span class="o">|</span> <span class="n">f2</span> <span class="o">|</span> <span class="n">f</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="expected-results">Expected results</h3>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">1 4 9
</span></span></code></pre></div><h3 id="suggested-environments">Suggested environments</h3>
<p><a href="https://godbolt.org/">Compiler explorer</a>, please add <strong>&ndash;std=c++20</strong> to the compilation options.</p>
<h3 id="my-implementation">My implementation</h3>
<p><a href="https://zhuanlan.zhihu.com/p/679162013">Reference code</a>, please use browser to translate page from Chinese to English if necessary.</p>]]></content:encoded></item></channel></rss>