diff --git a/src/hb-map.hh b/src/hb-map.hh
index 696cb87..c14a52a 100644
--- a/src/hb-map.hh
+++ b/src/hb-map.hh
@@ -159,7 +159,7 @@
 	if (old_items[i].is_real ())
 	  set_with_hash (old_items[i].key,
 			 old_items[i].hash,
-			 hb_move (old_items[i].value));
+			 std::move (old_items[i].value));
 
     hb_free (old_items);
 
@@ -167,7 +167,7 @@
   }
 
   bool set (K key, const V& value) { return set_with_hash (key, hb_hash (key), value); }
-  bool set (K key, V&& value) { return set_with_hash (key, hb_hash (key), hb_move (value)); }
+  bool set (K key, V&& value) { return set_with_hash (key, hb_hash (key), std::move (value)); }
 
   V get (K key) const
   {
diff --git a/src/hb-meta.hh b/src/hb-meta.hh
index 802509b..a2c3200 100644
--- a/src/hb-meta.hh
+++ b/src/hb-meta.hh
@@ -30,6 +30,7 @@
 #include "hb.hh"
 
 #include <type_traits>
+#include <utility>
 
 
 /*
@@ -174,10 +175,7 @@
 >;
 #define hb_is_cr_convertible(From,To) hb_is_cr_convertible<From, To>::value
 
-/* std::move and std::forward */
-
-template <typename T>
-static constexpr hb_remove_reference<T>&& hb_move (T&& t) { return (hb_remove_reference<T>&&) (t); }
+/* std::forward */
 
 template <typename T>
 static constexpr T&& hb_forward (hb_remove_reference<T>& t) { return (T&&) t; }
diff --git a/src/hb-set.hh b/src/hb-set.hh
index dadcb51..8841427 100644
--- a/src/hb-set.hh
+++ b/src/hb-set.hh
@@ -42,7 +42,7 @@
   ~hb_sparseset_t () { fini (); }
 
   hb_sparseset_t (const hb_sparseset_t& other) : hb_sparseset_t () { set (other); }
-  hb_sparseset_t (hb_sparseset_t&& other) : hb_sparseset_t () { s = hb_move (other.s); }
+  hb_sparseset_t (hb_sparseset_t&& other) : hb_sparseset_t () { s = std::move (other.s); }
   hb_sparseset_t& operator= (const hb_sparseset_t& other) { set (other); return *this; }
   hb_sparseset_t& operator= (hb_sparseset_t&& other) { hb_swap (*this, other); return *this; }
   friend void swap (hb_sparseset_t& a, hb_sparseset_t& b) { hb_swap (a.s, b.s); }
diff --git a/src/hb-vector.hh b/src/hb-vector.hh
index b923921..df6b086 100644
--- a/src/hb-vector.hh
+++ b/src/hb-vector.hh
@@ -255,7 +255,7 @@
   Type pop ()
   {
     if (!length) return Null (Type);
-    return hb_move (arrayZ[--length]); /* Does this move actually work? */
+    return std::move (arrayZ[--length]); /* Does this move actually work? */
   }
 
   void remove (unsigned int i)
