[dawn] Fix call to missing copy-constructor

SystemHandle has an implicitly deleted copy constructor, but a return via implicit wrapping of a ResultOrError was causing some compilers to try to use the copy-constructor.
Instead, explicitly move to a ResultOrError.

Change-Id: Ib08eab89a03feb67a7c5047355cb5290bb662951
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/170860
Kokoro: Ben Clayton <bclayton@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
diff --git a/src/dawn/native/SystemHandle.h b/src/dawn/native/SystemHandle.h
index 4026ba42..ea3460f 100644
--- a/src/dawn/native/SystemHandle.h
+++ b/src/dawn/native/SystemHandle.h
@@ -28,6 +28,8 @@
 #ifndef SRC_DAWN_NATIVE_SYSTEMHANDLE_H_
 #define SRC_DAWN_NATIVE_SYSTEMHANDLE_H_
 
+#include <utility>
+
 #include "dawn/common/NonCopyable.h"
 #include "dawn/common/Platform.h"
 #include "dawn/native/Error.h"
@@ -66,7 +68,7 @@
         SystemHandle dupHandle;
         DAWN_TRY_ASSIGN(dupHandle, tmpOwnedHandle.Duplicate());
         tmpOwnedHandle.Detach();
-        return dupHandle;
+        return ResultOrError<SystemHandle>{std::move(dupHandle)};
     }
 
     bool IsValid() const;