[Dune] int --> size_type in FieldVector.

Thimo Neubauer thimo.neubauer at iwr.uni-heidelberg.de
Mon Oct 17 16:59:34 CEST 2005


Tach,

On Mon, Oct 17, 2005 at 03:10:48PM +0200, Robert Kloefkorn wrote:
> könnt ihr mal einen kurzen Kommentar zur int --> size_type Umstelleung
> abgeben. War das notwendig, oder habt ihr einfach so nix anders zu tun,
> mal abgesehen davon, dass bei dieser zentralen Klasse jegliche
> Änderungen immer gleich alle an ganz vielen Stellen betreffen.

Zwar bin ich nicht ganz im Kontext drin, kann aber zum Besten geben,
warum so eine Umstellung echt wichtig ist: auf 64bit-Systemen sind int
und size_type unterschiedlich. Beispiel string-Klasse: die
find()-Methode gibt ja bekanntlich string::npos zurück, wenn etwas
nicht gefunden wurde. Die Konstruktion

  int pos = str.find("bla");
  if (pos != string::npos) {
    ...
  };

ist selbst auf x86-Kisten kritisch (laut Bibel liefert find einen
unsigned), auf Alpha krachts aber richtig, weil der zurückgelieferte
npos nach Casten auf int natürlich != string::npos ist... solche
subtilen Typisierungsfehler sind auf lange Sicht echte Fallen.

Gruss

    Thimo 

(der demnächst Geld dafür bekommt, genau solche eigentlich unnötigen
Fehler zu entfernen...)




More information about the Dune mailing list