C++ fuer Windows und Linux entwickeln
-
typedef basic_string<char, char_traits<char>, allocator<char> > string; typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;
-
Tachyon schrieb:
der_besserwisser schrieb:
so'n kack! std::string ist ne klasse die aus einem klassen-template instanziiert wurde...
Hmm, ich dachte immer, das wäre 'n typedef...
Das ist auch eine Art von Instanzierung...
-
Tachyon schrieb:
Hmm, ich dachte immer, das wäre 'n typedef...
Ja, aber es ist eben kein eigentliches Klassen-Template, sondern eine vollständige Instantiierung eines Templates und damit eine Klasse. Ich denke darauf wollte der_besserwisser hinaus. So oder so sind solche Haarspaltereien völlig irrelevant, die Standard Template Library umfasst nicht alles, was im Standard mit templates zu tun hat, Punkt.
-
Wenn es schon genau sein soll: die STL ist nicht Teil des Standards, sie ist lediglich Vorlage für bestimmte Teile darin.
-
pumuckl schrieb:
Tachyon schrieb:
Hmm, ich dachte immer, das wäre 'n typedef...
...sondern eine vollständige Instantiierung eines Templates und damit eine Klasse...
Doch Haarspalt...
Dann müsste man std::string ja auch vorwärtsdeklarieren können (ob man es darf ist 'ne andere Kanne Öl).
-
Tachyon schrieb:
Dann müsste man std::string ja auch vorwärtsdeklarieren können (ob man es darf ist 'ne andere Kanne Öl).
typedefs kann man nie forward-deklarieren. Egal ob sie auf "echte" Klassen oder template-instantiierungen gehen.
Oder willst du darauf hinaus, dass std::string keine Klasse, sondern eben nur ein typedef ist? Die gibts in der STL auch

-
Tachyon schrieb:
pumuckl schrieb:
Tachyon schrieb:
Hmm, ich dachte immer, das wäre 'n typedef...
...sondern eine vollständige Instantiierung eines Templates und damit eine Klasse...
Doch Haarspalt...
Dann müsste man std::string ja auch vorwärtsdeklarieren können (ob man es darf ist 'ne andere Kanne Öl).Vorsicht Spaltpiltz. Was soll std::string denn sonst sein, wenn keine Klasse?
-
camper schrieb:
Tachyon schrieb:
pumuckl schrieb:
Tachyon schrieb:
Hmm, ich dachte immer, das wäre 'n typedef...
...sondern eine vollständige Instantiierung eines Templates und damit eine Klasse...
Doch Haarspalt...
Dann müsste man std::string ja auch vorwärtsdeklarieren können (ob man es darf ist 'ne andere Kanne Öl).Vorsicht Spaltpiltz. Was soll std::string denn sonst sein, wenn keine Klasse?
Ein typedef auf std::basic_string<char>?
-
Tachyon schrieb:
camper schrieb:
Tachyon schrieb:
pumuckl schrieb:
Tachyon schrieb:
Hmm, ich dachte immer, das wäre 'n typedef...
...sondern eine vollständige Instantiierung eines Templates und damit eine Klasse...
Doch Haarspalt...
Dann müsste man std::string ja auch vorwärtsdeklarieren können (ob man es darf ist 'ne andere Kanne Öl).Vorsicht Spaltpiltz. Was soll std::string denn sonst sein, wenn keine Klasse?
Ein typedef auf std::basic_string<char>?
Eben.
typedefs führen typedef-Namen ein (7.1.3/1). Und std::string ist folglich ein typedef-Name. Dieser Name verweist auf eine bestimmte Klassentemplatespezialisierung von std::basic_string. std::string ist somit eine Klasse.
Wer Haare spaltet, muss mit Spliss leben
Keine interessanten Fragen im Forum heute
-
camper schrieb:
Keine interessanten Fragen im Forum heute

Stimmt, ich sterbe auch schon vor Langeweile ;o)