<div dir="ltr">Hello all,<div><br></div><div>I've some questions regarding to move operators:</div><div><br><div>1 - As Houndie, in request #20 in boost/org/ublas, I would like to include the rreference operator (&&) before the matrix parameter:</div><div><br></div><div><div>- fixed_matrix &operator = (fixed_matrix m) {</div><div>+ fixed_matrix &operator = (fixed_matrix && m) {</div></div><div><br></div><div>This is how I've seen defined the move operator in may places. However, the comment tells that the parameter is passed by value to enable the move semantics. I've searched about move operator with parameter by value. I've found this article <a href="http://cpptruths.blogspot.com.es/2012/03/rvalue-references-in-constructor-when.html">http://cpptruths.blogspot.com.es/2012/03/rvalue-references-in-constructor-when.html</a>.</div><div><br></div><div>The article tells that to activate the move semantics, the parameter should be passed by value (as you tell), but it is not applied the the move constructor or move iterator:</div><div><br></div><div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-weight:bold!important;font-size:1.01em!important;min-height:inherit!important;color:rgb(0,102,153)!important;background:none!important">class</code> <code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">Book {</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-weight:bold!important;font-size:1.01em!important;min-height:inherit!important;color:rgb(0,102,153)!important;background:none!important">public</code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">:</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">Book(std::string title,</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">std::vector<std::string> authors, // <-- Parameter by value</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-weight:bold!important;font-size:1.01em!important;min-height:inherit!important;color:gray!important;background:none!important">size_t</code> <code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">pub_day</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">std::string pub_month,</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-weight:bold!important;font-size:1.01em!important;min-height:inherit!important;color:gray!important;background:none!important">size_t</code> <code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">pub_year)</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">: _title (std::move(title)),</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">_authors (std::move(authors)), // <-- The parameter is moved to member variable</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">_pub_day (pub_day),</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">_pub_month(std::move(pub_month)),</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">_pub_year (pub_year)</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">{}</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"> </div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="clear:both;margin:0px!important;border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:rgb(0,130,0)!important;background:none!important">// ....</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;background:none!important"> </code><code class="" style="clear:both;margin:0px!important;border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:rgb(0,130,0)!important;background:none!important">// ....</code></div><div class="" style="font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace;color:rgb(255,255,255);border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px 1em!important;vertical-align:baseline!important;width:auto!important;font-size:1.01em!important;min-height:inherit!important;white-space:pre!important;background-image:none!important;background-repeat:initial!important"><code class="" style="border-radius:0px!important;border:0px!important;float:none!important;height:auto!important;line-height:1.1em!important;margin:0px!important;outline:0px!important;overflow:visible!important;padding:0px!important;vertical-align:baseline!important;width:auto!important;font-family:Consolas,'Bitstream Vera Sans Mono','Courier New',Courier,monospace!important;font-size:1.01em!important;min-height:inherit!important;color:black!important;background:none!important">};</code></div></div><div><br></div><div>2 - AFAIK, with the implementation of move semantics has not deprecated the copy semantics. As it is defined in the source code, it looks like that move semantic could not be used with copy semantics. Both semantics should be used at the same time in a C++11 compiler:</div><div><br></div><div>// Copy semantics</div><div>matrix m1;</div><div>matrix m2(m1);</div><div>m2 = m1;</div><div><br></div><div>// Move semantics</div><div>matrix m1;</div><div>matrix m2(std::move(m1));</div><div>m3 = std::move(m2);</div><div><br></div><div>Please, could you confirm that move operators are defined as expected?</div><div><br></div><div><div>Thanks and Best Regards,</div><div>Joaquim Duran</div><div><br></div></div></div></div>