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;
    

  • Mod

    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.


  • Mod

    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 😛


  • Mod

    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>?


  • Mod

    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)


Anmelden zum Antworten