dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #20687
Re: const inconsistencies for operator* in inheriting Iterator classes
-
To:
DOLFIN Mailing List <dolfin@xxxxxxxxxxxxxxxxxxx>
-
From:
Anders Logg <logg@xxxxxxxxx>
-
Date:
Sat, 15 Jan 2011 00:08:44 +0100
-
In-reply-to:
<20110114230654.GA2090@eowyn>
-
User-agent:
Mutt/1.5.21 (2010-09-15)
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