From: Dan Gohman Date: Sun, 4 Jan 2009 03:22:42 +0000 (+0000) Subject: Add several more unimplemented operator overloads to ilist_iterator X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=2c8a1522dbe6f14b728e83b9c555bef27233cc91;p=oota-llvm.git Add several more unimplemented operator overloads to ilist_iterator to help catch errors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61622 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ADT/ilist.h b/include/llvm/ADT/ilist.h index ea4ca430d5c..0acbf46a1aa 100644 --- a/include/llvm/ADT/ilist.h +++ b/include/llvm/ADT/ilist.h @@ -107,15 +107,27 @@ public: typedef ilist_traits Traits; typedef bidirectional_iterator 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 void operator<(T) const; + template void operator<=(T) const; + template void operator>(T) const; + template void operator>=(T) const; + template void operator-(T) const; public: ilist_iterator(pointer NP) : NodePtr(NP) {}