Thread Previous • Date Previous • Date Next • Thread Next |
Den 15.01.11 00.08, skrev Anders Logg:
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 ?
Yes, this would be a way to go, and even more explicit, since you could garantee constantness, whereas having both the const and non const version within one class would give you only the possibility to use certain operations within a function you passed the object as const reference to. In my example I have an iterator but I only want to use const member function such as index() of the entity. Since I do that via operator-> I loose constantness then and adding
inline const Facet& operator*() constwould remedy this. Not sure whether this is worth to introduce /split iterators into to classes. I would probably go for adding const version.
-- Andre
-- Anders _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@xxxxxxxxxxxxxxxxxxx Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp
-- André Massing email: massing@xxxxxxxxx Ph.D. student mobile: +47 469 57 401 Simula Research Laboratory NO-1367 Fornebu, Norway
Thread Previous • Date Previous • Date Next • Thread Next |