Use of WTF::move prevents clang's move diagnostics from warning about several classes...
authoraestes@apple.com <aestes@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 31 Dec 2015 05:24:12 +0000 (05:24 +0000)
committeraestes@apple.com <aestes@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 31 Dec 2015 05:24:12 +0000 (05:24 +0000)
commit4e387149e5a565b36f79d44959c77d9c5178dc9b
tree115ab59d9af49f896e6005af3747243dc3ad5f75
parent35022e9f53110b0e91fb6d07f0ae6ec47b2589fc
Use of WTF::move prevents clang's move diagnostics from warning about several classes of mistakes
https://bugs.webkit.org/show_bug.cgi?id=152601

Reviewed by Brady Eidson.

Clang has recently added warnings to catch certain classes of mistakes with the use of std::move():
-Wpessimizing-move (warns if moving prevents copy elision), -Wredundant-move (warns if a move is redundant),
and -Wself-move (warns if moving to self). Enabling these warnings manually (by renaming WTF::move to std::move)
have caught numerous mistakes in our codebase (see http://trac.webkit.org/changeset/194428).

It would be nice to be able to take advantage of these warnings, but doing so requires that we use std::move,
not WTF::move. But since WTF::move does provide useful checks for which clang does not yet have warnings,
we should write a best-of-both-worlds move function.

This patch adds a function that satisfies clang's criteria for a move function (in namespace std, named "move",
and takes a single argument) but also retains WTF::move's compile-time checks. It also adds a convenience macro
called WTF_MOVE for use by callers.

* wtf/StdLibExtras.h:
(std::move):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@194451 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WTF/ChangeLog
Source/WTF/wtf/StdLibExtras.h