This commit is contained in:
y1yang0 2024-02-19 02:18:54 +00:00
parent 61fc383a47
commit cecb07abe3
4 changed files with 4 additions and 4 deletions

View File

@ -310,7 +310,7 @@ reduceAndCopy(T&& frac) //通用引用的形参
return std::move(w); //把w看成右值因为不执行拷贝消除 return std::move(w); //把w看成右值因为不执行拷贝消除
} }
</code></pre> </code></pre>
<p>这种情况与按值返回函数形参的情况很像。形参们没资格参与函数返回值的拷贝消除,但是如果作为返回值的话编译器会将其视作右值。结果就是,如果代码如下:</p> <p>这种情况与返回函数传值形参的情况很像。传值形参们没资格参与函数返回值的拷贝消除,但是如果作为返回值的话编译器会将其视作右值。结果就是,如果代码如下:</p>
<pre><code class="language-cpp">Widget makeWidget(Widget w) //传值形参,与函数返回的类型相同 <pre><code class="language-cpp">Widget makeWidget(Widget w) //传值形参,与函数返回的类型相同
{ {

View File

@ -3639,7 +3639,7 @@ reduceAndCopy(T&amp;&amp; frac) //通用引用的形参
return std::move(w); //把w看成右值因为不执行拷贝消除 return std::move(w); //把w看成右值因为不执行拷贝消除
} }
</code></pre> </code></pre>
<p>这种情况与按值返回函数形参的情况很像。形参们没资格参与函数返回值的拷贝消除,但是如果作为返回值的话编译器会将其视作右值。结果就是,如果代码如下:</p> <p>这种情况与返回函数传值形参的情况很像。传值形参们没资格参与函数返回值的拷贝消除,但是如果作为返回值的话编译器会将其视作右值。结果就是,如果代码如下:</p>
<pre><code class="language-cpp">Widget makeWidget(Widget w) //传值形参,与函数返回的类型相同 <pre><code class="language-cpp">Widget makeWidget(Widget w) //传值形参,与函数返回的类型相同
{ {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long