]> git.lyx.org Git - lyx.git/blobdiff - boost/boost/multi_array/iterator.hpp
* src/MenuBackend.[Ch]: the specialMenu is now a real menu, not a
[lyx.git] / boost / boost / multi_array / iterator.hpp
index 6fd836c9d0177ab2fba76be61c188adcde096c22..59e7724f55048d9af26fea77fd9aa572c6ba6f53 100644 (file)
@@ -21,6 +21,7 @@
 #include "boost/multi_array/base.hpp"
 #include "boost/iterator/iterator_facade.hpp"
 #include "boost/mpl/aux_/msvc_eti_base.hpp"
+#include <algorithm>
 #include <cstddef>
 #include <iterator>
 
@@ -56,11 +57,11 @@ class array_iterator
       , Reference
     >
     , private
-#if BOOST_WORKAROUND(BOOST_MSVC,==1200)
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
       mpl::aux::msvc_eti_base<typename 
 #endif 
           value_accessor_generator<T,NumDims>::type
-#if BOOST_WORKAROUND(BOOST_MSVC,==1200)
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
       >::type
 #endif 
 {
@@ -98,7 +99,7 @@ public:
 
   array_iterator() {}
 
-  array_iterator(int idx, TPtr base, const size_type* extents,
+  array_iterator(index idx, TPtr base, const size_type* extents,
                 const index* strides,
                 const index* index_base) :
     idx_(idx), base_(base), extents_(extents),
@@ -137,11 +138,15 @@ public:
 
   template <class IteratorAdaptor>
   bool equal(IteratorAdaptor& rhs) const {
+    const std::size_t N = NumDims::value;
     return (idx_ == rhs.idx_) &&
       (base_ == rhs.base_) &&
-      (extents_ == rhs.extents_) &&
-      (strides_ == rhs.strides_) &&
-      (index_base_ == rhs.index_base_);
+      ( (extents_ == rhs.extents_) ||
+        std::equal(extents_,extents_+N,rhs.extents_) ) &&
+      ( (strides_ == rhs.strides_) ||
+        std::equal(strides_,strides_+N,rhs.strides_) ) &&
+      ( (index_base_ == rhs.index_base_) ||
+        std::equal(index_base_,index_base_+N,rhs.index_base_) );
   }
 
   template <class DifferenceType>