[meta] Add enable_if
diff --git a/src/hb-meta.hh b/src/hb-meta.hh
index 6285d39..62fc71a 100644
--- a/src/hb-meta.hh
+++ b/src/hb-meta.hh
@@ -30,6 +30,11 @@
 #include "hb.hh"
 
 
+/*
+ * C++ Template Meta-programming.
+ */
+
+
 /* Void! For when we need a expression-type of void. */
 struct hb_void_t { typedef void value; };
 
@@ -37,4 +42,15 @@
 struct hb_false_t { enum { value = false }; };
 
 
+
+template<bool B, class T = void>
+struct hb_enable_if {};
+
+template<class T>
+struct hb_enable_if<true, T> { typedef T type; };
+
+#define hb_enable_if(Cond) hb_enable_if<Code>::type* = nullptr
+#define hb_enable_if_t(Type, Cond) hb_enable_if<(Cond), Type>::type
+
+
 #endif /* HB_META_HH */