From cd0639452c75f6e707792416ee81f73a6763c137 Mon Sep 17 00:00:00 2001 From: Ronald Garcia Date: Wed, 31 May 2006 20:59:58 +0000 Subject: [PATCH] Merging iterator bug fix into 1.34 release. [SVN r34130] --- include/boost/multi_array/iterator.hpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/include/boost/multi_array/iterator.hpp b/include/boost/multi_array/iterator.hpp index 628fc59..59e7724 100644 --- a/include/boost/multi_array/iterator.hpp +++ b/include/boost/multi_array/iterator.hpp @@ -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 #include #include @@ -137,11 +138,15 @@ public: template 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