@@ -618,6 +618,7 @@ class PagedArray<ValueT, Log2PageSize>::ConstIterator
618618 ConstIterator operator +(const difference_type &pos) const { return Iterator (*mParent ,mPos +pos); }
619619 ConstIterator operator -(const difference_type &pos) const { return Iterator (*mParent ,mPos -pos); }
620620 difference_type operator -(const ConstIterator& other) const { return mPos - other.pos (); }
621+ friend ConstIterator operator +(const difference_type& pos, const ConstIterator& other) { return other + pos; }
621622 // comparisons
622623 bool operator ==(const ConstIterator& other) const { return mPos == other.mPos ; }
623624 bool operator !=(const ConstIterator& other) const { return mPos != other.mPos ; }
@@ -633,6 +634,12 @@ class PagedArray<ValueT, Log2PageSize>::ConstIterator
633634 const PagedArray* mParent ;
634635};// Public class PagedArray::ConstIterator
635636
637+ #ifdef OPENVDB_HAS_CXX20
638+ static_assert (std::random_access_iterator<PagedArray<int , 10UL >::ConstIterator>,
639+ " ConstIterator must satisfy random_access_iterator concept" );
640+ #endif
641+
642+
636643// //////////////////////////////////////////////////////////////////////////////
637644
638645// Non-const std-compliant iterator
@@ -672,6 +679,7 @@ class PagedArray<ValueT, Log2PageSize>::Iterator
672679 Iterator operator +(const difference_type &pos) const { return Iterator (*mParent , mPos +pos); }
673680 Iterator operator -(const difference_type &pos) const { return Iterator (*mParent , mPos -pos); }
674681 difference_type operator -(const Iterator& other) const { return mPos - other.pos (); }
682+ friend Iterator operator +(const difference_type& pos, const Iterator& other) { return other + pos; }
675683 // comparisons
676684 bool operator ==(const Iterator& other) const { return mPos == other.mPos ; }
677685 bool operator !=(const Iterator& other) const { return mPos != other.mPos ; }
@@ -687,6 +695,11 @@ class PagedArray<ValueT, Log2PageSize>::Iterator
687695 PagedArray* mParent ;
688696};// Public class PagedArray::Iterator
689697
698+ #ifdef OPENVDB_HAS_CXX20
699+ static_assert (std::random_access_iterator<PagedArray<int , 10UL >::Iterator>,
700+ " Iterator must satisfy random_access_iterator concept" );
701+ #endif
702+
690703// //////////////////////////////////////////////////////////////////////////////
691704
692705// Private member-class of PagedArray implementing a memory page
0 commit comments