Illegal?
-
Old McDonald schrieb:
Und
operator[n]ist definiert über*(begin() + n). Also darf man das inzwischen.Das allein (also ohne das, was Du vorher geschrieben hast) garantiert allerdings nicht, dass die Elemente hintereinander im Speicher liegen. basic_string<>::begin() muss ja keinen Zeiger zurückgeben.
BTW: Die
&*(s.begin() + n) == &*s.begin() + n-Garantie gibt es scheinbar nicht in C++03 -- sie ist zumindest nicht in N1804 von 2005 drin, wenn ich nichts übersehen habe.Gruß,
SP
-
Ja, das allein nicht. Aber zusammengenommen mit der Garantie, dass
&*begin() + n == &*(begin() + n), folgt natürlich&s[n] == &s[0] + n.In C++03 gab's die Garantie nicht, das ist mir auch aufgefallen, als ich ein wenig gesucht habe. Also ist die Garantie bei
std::vectorälter.