[meta] Add hb_move and hb_forward ala std::
authorBehdad Esfahbod <behdad@behdad.org>
Sun, 31 Mar 2019 01:19:36 +0000 (18:19 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Sun, 31 Mar 2019 01:23:24 +0000 (18:23 -0700)
src/hb-meta.hh

index a303c67..63c8a8c 100644 (file)
@@ -72,6 +72,17 @@ static const struct
 } hb_deref_pointer HB_UNUSED;
 
 
+/* std::move and std::forward */
+
+template <typename T>
+hb_remove_reference (T)&& hb_move (T&& t) { return (hb_remove_reference (T)&&) (t); }
+
+template <typename T>
+T&& hb_forward (hb_remove_reference (T)& t) { return (T&&) t; }
+template <typename T>
+T&& hb_forward (hb_remove_reference (T)&& t) { return (T&&) t; }
+
+
 /* Void!  For when we need a expression-type of void. */
 struct hb_void_t { typedef void value; };