Add several more unimplemented operator overloads to ilist_iterator
authorDan Gohman <gohman@apple.com>
Sun, 4 Jan 2009 03:22:42 +0000 (03:22 +0000)
committerDan Gohman <gohman@apple.com>
Sun, 4 Jan 2009 03:22:42 +0000 (03:22 +0000)
to help catch errors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61622 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/ilist.h

index ea4ca430d5cac83c1a3200888e87f20aa7a9b1a6..0acbf46a1aade9a25b322002a5a7b19ff87e3611 100644 (file)
@@ -107,15 +107,27 @@ public:
   typedef ilist_traits<NodeTy> Traits;
   typedef bidirectional_iterator<NodeTy, ptrdiff_t> super;
 
-  typedef size_t size_type;
+  typedef typename super::value_type value_type;
+  typedef typename super::difference_type difference_type;
   typedef typename super::pointer pointer;
   typedef typename super::reference reference;
 private:
   pointer NodePtr;
 
-  // operator[] is not defined. Compile error instead of having a runtime bug.
-  void operator[](unsigned) {}
-  void operator[](unsigned) const {}
+  // ilist_iterator is not a random-access iterator, but it has an
+  // implicit conversion to pointer-type, which is. Declare (but
+  // don't define) these functions as private to help catch
+  // accidental misuse.
+  void operator[](difference_type) const;
+  void operator+(difference_type) const;
+  void operator-(difference_type) const;
+  void operator+=(difference_type) const;
+  void operator-=(difference_type) const;
+  template<class T> void operator<(T) const;
+  template<class T> void operator<=(T) const;
+  template<class T> void operator>(T) const;
+  template<class T> void operator>=(T) const;
+  template<class T> void operator-(T) const;
 public:
 
   ilist_iterator(pointer NP) : NodePtr(NP) {}