Schönerer Ersatz für sizeof(*str.data()) (C++03)?
-
Aufgabe: Nur mit Hilfe einer Variable vom Typ
std::basic_string<???, ???>rausbekommen wie gross ein Element ist.
Meine (mMn. nicht sehr elegante) Lösung:sizeof(*str.data())Mit C++11 müsste ja - schätze ich -
sizeof(decltype(str)::value_type)verwenden können. Was zwar länger aber mMn. auch viel aussagekräftiger ist.Geht das mit C++03 auch irgendwie "schöner"?
ps: Die Lösung soll "in place" sein. Also kein (eigenes) Hilfs-Template o.ä. verwenden (fertige Sachen in
std::oderboost::sind natürlich OK).
-
Ich hätte einfach
sizeof(str[0])gemacht.
-
Was passiert denn eigentlich in beiden Fällen, wenn der String leer ist?
-
Der Ausdruck wird nicht zur Laufzeit ausgewertet, es ist nur der Typ relevant. Dort könnte auch ein
sizeof(str[42])stehen.
-
underkill schrieb:
Ich hätte einfach
sizeof(str[0])gemacht.
Hatte ich auch erst stehen.
Dann ist mirvector<bool>eingefallen*.
Und dann hab ich ebensizeof(*str.data())geschrieben.*: Ich weiss schon dass es dieses Problem bei
basic_stringnicht gibt sondern nur beivector. Trotzdem hatte ich danach keine Lust mehrstr[0]zu verwenden
-
Darf man cheaten? gcc hatte irgendwann mal eine
typeof()-Extension.
-
Nein, man darf nicht cheaten
