<div dir="ltr"><div>Hi all,</div><div><br></div><div>Following &lt;<a href="http://trac.webkit.org/changeset/170774">http://trac.webkit.org/changeset/170774</a>&gt;, please use WTF::move() instead of std::move(). I substituted WTF::move() for std::move() in all code to date. WTF::move() is a replacement for std::move() that is less error prone to use.</div>
<div><br></div><div>Depending on std::move() to lead to a move operation has led to bugs in some contexts, including &lt;<a href="https://bugs.webkit.org/show_bug.cgi?id=134304">https://bugs.webkit.org/show_bug.cgi?id=134304</a>&gt; and &lt;<a href="http://trac.webkit.org/changeset/170594">http://trac.webkit.org/changeset/170594</a>&gt;. In particular, assigning the result of std::move() that is passed a const value will lead to a copy operation (*). For comparison, WTF::move() compile asserts that its argument is a non-const lvalue reference (**). So, passing a const value to WTF::move() will cause a compile-time error. This behavior prevents introducing such bugs and catches unnecessary calls to move() with an rvalue (as such calls are no-ops).</div>
<div><br></div><div>If you encounter issues using WTF::move() or have suggestions for improvement then please file a bug and CC me.</div><div><br></div><div>Have a happy Fourth of July weekend!</div><div><br></div><div>Dan</div>
<div><br></div><div>(*) I&#39;m disregarding functions with nonsensical signatures and behavior, such as a move assignment operator taking a const rvalue reference.</div><div><br></div><div>(**) A person must still ensure that using WTF::move() is necessary at each call site. That is, that the usage of WTF::move() leads to a move operation as opposed to a copy operation.</div>
</div>