[iter] Allow hb_len() to fetch c.len as non-function
diff --git a/src/hb-iter.hh b/src/hb-iter.hh
index b57f37b..b123b2f 100644
--- a/src/hb-iter.hh
+++ b/src/hb-iter.hh
@@ -172,10 +172,16 @@
 HB_FUNCOBJ (hb_iter);
 struct
 {
-  template <typename T> unsigned
-  operator () (T&& c) const
-  { return c.len (); }
+  template <typename T> auto
+  impl (T&& c, hb_priority<1>) const HB_RETURN (unsigned, c.len ())
 
+  template <typename T> auto
+  impl (T&& c, hb_priority<0>) const HB_RETURN (unsigned, c.len)
+
+  public:
+
+  template <typename T> auto
+  operator () (T&& c) const HB_RETURN (unsigned, impl (std::forward<T> (c), hb_prioritize))
 }
 HB_FUNCOBJ (hb_len);