[iter] Another try at writing some for loops as range loops
diff --git a/src/hb-iter.hh b/src/hb-iter.hh
index 98d65a8..f50af39 100644
--- a/src/hb-iter.hh
+++ b/src/hb-iter.hh
@@ -496,8 +496,8 @@
   operator () (Iter it)
   {
     AccuT value = init_value;
-    for (; it; ++it)
-      value = r (value, *it);
+    for (auto&& _ : it)
+      value = r (value, _);
     return value;
   }
 
@@ -679,8 +679,8 @@
 	    hb_requires (hb_is_iterator (Iter))>
   void operator () (Iter it)
   {
-    for (; it; ++it)
-      (void) hb_invoke (a, *it);
+    for (auto&& _ : it)
+      (void) hb_invoke (a, _);
   }
 
   private:
@@ -879,8 +879,8 @@
 	    hb_requires (hb_is_iterator (Iter))>
   void operator () (Iter it)
   {
-    for (; it; ++it)
-      s << *it;
+    for (auto&& _ : it)
+      s << _;
   }
 
   private:
@@ -906,8 +906,8 @@
 	    hb_requires (hb_is_iterator (Iter))>
   void operator () (Iter it) const
   {
-    for (; it; ++it)
-      (void) *it;
+    for (auto&& _ : it)
+      (void) _;
   }
 }
 HB_FUNCOBJ (hb_drain);
@@ -923,11 +923,10 @@
 	    hb_requires (hb_is_iterator (Iter))>
   void operator () (Iter it)
   {
-    for (; it; ++it)
+    for (auto&& _ : it)
     {
-      const auto &v = *it;
-      s1 << v.first;
-      s2 << v.second;
+      s1 << _.first;
+      s2 << _.second;
     }
   }