set-Iteratoren und Constness
-
Hi,
ich habe mal wieder eine Standard-bezogene Frage:
Ich habe gerade den Standard gewälzt, kann aber nicht finden, dass set::iterator das selbe sein muss wie set::const_iterator (steht in der SGI Doku).
In 23.1.2 p5 wird für Maps garantiert, dass der Key const ist - aber für sets nicht. Auch in den Requirements für assoziative Container habe ich nichts gesehen. Übersehe ich etwas? Geht das irgendwo implizit hervor?MfG
-
Übersehe ich etwas?
Nein.
Geht das irgendwo implizit hervor?
Nicht wirklich. Derzeit ist es implementation-defined ob ein set::iterator ein const T oder ein T referenziert. Prinzipiell ist ein T nicht ganz unsinnig, da der Schlüssel der Set ja auch nur ein Teil des Ganzen Objekts sein kann. Und solange du nur Teile änderst, die nicht zum Schlüssel gehören ist ja alles schick.
Wie auch immer der Implementierer sich entscheidet, es ist immer verboten den Key-Teil von T zu verändern.Es gibt zu diesem Thema aber einen Defect Report:
Siehe hier: http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html
(Punkt 103)
-
Mal wieder ein Dankeschön an dich! Hatte schon auf eine Antwort von dir gehofft

Ich hab mal wieder den schönen Fall, dass eine Implementation const sagt und die andere nicht. Aber sonst wär's ja auch langweilig.
Liest Du eigentlich jeden Abend ein paar Seiten vom Standard?
Oder woher weißt Du soviel? 
-
Das Thema wurde schon mehrfach in comp.lang.c++.moderated diskutiert. Was nicht heißen soll, dass Hume keinen Standard auf dem Nachtschränkchen haben kann

-
Hallo,
den Standard lese ich nur, wenn nichts anderes mehr hilft
Dieses konkrete Problem war mir z.B. aus Scott Meyers' "Effective STL" (Item 22) bekannt.