Move hb_addressof() to hb-meta.hh
diff --git a/src/hb-algs.hh b/src/hb-algs.hh
index d03906c..9b524c1 100644
--- a/src/hb-algs.hh
+++ b/src/hb-algs.hh
@@ -271,18 +271,6 @@
* Tiny stuff.
*/
-template <typename T> static inline T*
-hb_addressof (const T& arg)
-{
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wcast-align"
- /* https://en.cppreference.com/w/cpp/memory/addressof */
- return reinterpret_cast<T*>(
- &const_cast<char&>(
- reinterpret_cast<const volatile char&>(arg)));
-#pragma GCC diagnostic pop
-}
-
/* ASCII tag/character handling */
static inline bool ISALPHA (unsigned char c)
{ return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); }
diff --git a/src/hb-iter.hh b/src/hb-iter.hh
index 5329182..93db59a 100644
--- a/src/hb-iter.hh
+++ b/src/hb-iter.hh
@@ -28,7 +28,6 @@
#define HB_ITER_HH
#include "hb.hh"
-#include "hb-algs.hh" // for hb_addressof
#include "hb-meta.hh"
diff --git a/src/hb-meta.hh b/src/hb-meta.hh
index a9f9df9..b580036 100644
--- a/src/hb-meta.hh
+++ b/src/hb-meta.hh
@@ -31,10 +31,22 @@
/*
- * C++ Template Meta-programming.
+ * C++ template meta-programming & fundamentals used with them.
*/
+template <typename T> static inline T*
+hb_addressof (const T& arg)
+{
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wcast-align"
+ /* https://en.cppreference.com/w/cpp/memory/addressof */
+ return reinterpret_cast<T*>(
+ &const_cast<char&>(
+ reinterpret_cast<const volatile char&>(arg)));
+#pragma GCC diagnostic pop
+}
+
template <typename T> static inline T hb_declval ();
#define hb_declval(T) (hb_declval<T> ())
diff --git a/src/hb.hh b/src/hb.hh
index eb941be..a6e3667 100644
--- a/src/hb.hh
+++ b/src/hb.hh
@@ -639,7 +639,7 @@
#include "hb-atomic.hh" // Requires: hb-meta
#include "hb-null.hh" // Requires: hb-meta
#include "hb-algs.hh" // Requires: hb-null
-#include "hb-iter.hh" // Requires: hb-algs hb-meta
+#include "hb-iter.hh" // Requires: hb-meta
#include "hb-debug.hh" // Requires: hb-algs hb-atomic
#include "hb-array.hh" // Requires: hb-algs hb-iter hb-null
#include "hb-vector.hh" // Requires: hb-array hb-null