← Back to team overview

dolfin team mailing list archive

Re: const inconsistencies for operator* in inheriting Iterator classes

 

On Sat, Jan 15, 2011 at 12:06:54AM +0100, Anders Logg wrote:
> On Fri, Jan 14, 2011 at 04:47:59PM +0100, Andre Massing wrote:
> > Hi!
> >
> > Since we talk so much about constantness in another post :),
> > I am just wondering why the operator* (and related operator)
> > in Iterator classes sometimes returns a const reference to an entity like
> > inline const Facet& operator*() { return *operator->(); }
> > and sometimes not as in
> > inline Cell& operator*() { return *operator->(); }
> >
> > Should that not be consistent and even better should not both
> > version be provided, as in
> > inline const Facet& operator*() const { return *operator->(); }
> > and				(^^^ there should be a second const)
> > inline Facet& operator*() { return *operator->(); }
> > ?

I think the problem is that we haven't differentiated between const
and non-const iterators as it's done in STL.

Wouldn't we need to have two different iterators?

  CellIterator and
  ConstCellIterator etc

?

--
Anders




Follow ups

References