[Dune] Iterators for fake reference types
Carsten Gräser
graeser at math.fu-berlin.de
Fri Nov 20 14:08:10 CET 2009
By the way: The same problem arises if we want to have an
implementation of BDMatrix that does not waste memory.
Carsten
Carsten Gräser schrieb:
> Dear all,
> while trying to run the matrix test with ScaledIdentityMatrix
> and DiagonalMatrix the following question arose:
>
> Suppose you have an iterator 'it' for a pseudo container returning
> fake references of type 'RefT' that should behave similar to 'T&'.
>
> This is e.g. done in std::vector<bool>, BitSetVector and the above
> matrix classes. While RefT refers to an elementary type for
> vector<bool> this is not true in the cases. Thus one would like
> to call methods of RefT which is always safe in the temporary scope.
> Taking addresses is obviously forbidden.
>
> (*it).f(); // OK
> &(*it); // not OK
>
> The leeds to the ugly fact that you can not use
>
> it->f();
>
> Since '->' does not allow creation of a temp object. The only 'solution'
> I can imagine would be to return an auto_ptr to a RefT created on the
> heap. However then
>
> (*it).f();
> it->f();
>
> would do fundamentally different thing an the latter would
> (unexpectedly for the user) be much slower.
>
> Does anyone have idea I missed how to solve this ?
>
> Regards
> Carsten
>
--
----------------------------------------------------------------------
Carsten Gräser | phone: +49-30 / 838-75349
Freie Universität Berlin | fax : +49-30 / 838-54977
Institut für Mathematik | email: graeser at math.fu-berlin.de
Arnimallee 6 |
14195 Berlin, Germany | URL : http://page.mi.fu-berlin.de/graeser
----------------------------------------------------------------------
More information about the Dune
mailing list