diff --git a/src/gn/builder_record_map.h b/src/gn/builder_record_map.h
index 77f0695..41c6565 100644
--- a/src/gn/builder_record_map.h
+++ b/src/gn/builder_record_map.h
@@ -64,6 +64,16 @@
 
     const BuilderRecord* operator->() const { return node_->record; }
     BuilderRecord* operator->() { return node_->record; }
+
+    const_iterator& operator++() {
+      NodeIterator::operator++();
+      return *this;
+    }
+    const_iterator operator++(int) {
+      const_iterator result = *this;
+      NodeIterator::operator++();
+      return result;
+    }
   };
 
   const_iterator begin() const { return {NodeBegin()}; }
diff --git a/src/gn/hash_table_base.h b/src/gn/hash_table_base.h
index 7e5b34e..cfe194d 100644
--- a/src/gn/hash_table_base.h
+++ b/src/gn/hash_table_base.h
@@ -281,7 +281,16 @@
   //     // Iterators point to Foo instances, not table nodes.
   //     struct ConstIterator : NodeIterator {
   //       const Foo* operator->() { return node_->foo_ptr; }
-  //       const Foo& operator*)) { return *(node_->foo_ptr); }
+  //       const Foo& operator*() { return *(node_->foo_ptr); }
+  //       ConstIterator& operator++() {
+  //         NodeIterator::operator++();
+  //         return *this;
+  //       }
+  //       ConstIterator operator++(int) {
+  //         ConstIterator result = *this;
+  //         NodeIterator::operator++();
+  //         return result;
+  //       }
   //     };
   //
   //     ConstIterator begin() const { return { NodeBegin() }; }
@@ -371,7 +380,16 @@
   //     // Iterators point to Foo instances, not table nodes.
   //     struct ConstIterator : NodeIterator {
   //       const Foo* operator->() { return node_->foo_ptr; }
-  //       const Foo& operator*)) { return *(node_->foo_ptr); }
+  //       const Foo& operator*() { return *(node_->foo_ptr); }
+  //       ConstIterator& operator++() {
+  //         NodeIterator::operator++();
+  //         return *this;
+  //       }
+  //       ConstIterator operator++(int) {
+  //         ConstIterator result = *this;
+  //         NodeIterator::operator++();
+  //         return result;
+  //       }
   //     };
   //
   // and compare two ways to implement its begin() method:
diff --git a/src/gn/hash_table_base_unittest.cc b/src/gn/hash_table_base_unittest.cc
index 7acbfbe..17eaf98 100644
--- a/src/gn/hash_table_base_unittest.cc
+++ b/src/gn/hash_table_base_unittest.cc
@@ -182,6 +182,15 @@
       return (this->BaseType::NodeIterator::operator*()).int_ptr->x();
     }
     const int* operator->() const { return &(this->operator*()); }
+    const_iterator& operator++() {
+      BaseType::NodeIterator::operator++();
+      return *this;
+    }
+    const_iterator operator++(int) {
+      const_iterator result = *this;
+      BaseType::NodeIterator::operator++();
+      return result;
+    }
   };
 
   const_iterator begin() const { return {BaseType::NodeBegin()}; }
diff --git a/src/gn/pointer_set.h b/src/gn/pointer_set.h
index 6a4ec62..4c4da2f 100644
--- a/src/gn/pointer_set.h
+++ b/src/gn/pointer_set.h
@@ -161,6 +161,15 @@
     T* operator*() const {
       return const_cast<T*>(static_cast<const T*>(node_->ptr_));
     }
+    const_iterator& operator++() {
+      NodeIterator::operator++();
+      return *this;
+    }
+    const_iterator operator++(int) {
+      const_iterator result = *this;
+      NodeIterator::operator++();
+      return result;
+    }
 
     // The following allows:
     // std::vector<T*> vector(set.begin(), set.end());
