C++09 (Teil 1) - Ein Überblick: Sprachfeatures



  • Badestrand schrieb:

    Gut erklärt! Eine Frage hätte ich aber noch:

    queer_boy schrieb:

    #include <iterator_concept>
    
    template <class T>
    void test (T range)
    {
       for (auto& element: range)
       {                          
          element *= 2;
       }
    }
    

    Wie würde ich das aufrufen?

    zb. mit

    int main ()
    {
       vector<int> v { 1, 2, 3, 4, 5 };
       test (v);
       //oder
       int arr[] = { 6, 7, 8 };
       test (arr);
    }
    

    die funktion würde man wohl auch eher als

    template <typename T>
    requires Range<T>
    void test (T& range)
    //oder
    template <Range R>
    void test (R& range)
    

    deklarieren. aber das hab ich in dem beispiel aus gründen der übersichtlichkeit weggelassen.



  • 👍 gute Arbeit! Ich freue mich schon auf C++09 🙂

    @Ribosom
    Hat der MSVC überhaupt schon eine TR1-Implementierung?



  • rüdiger! Es gibt mittlerweile ein sogenanntes Feature-Pack für MSVS2008 von MS als Beta, in dem auch ein TR1 drin ist. Das Final soll noch in diesem Quartal raus kommen.



  • Juhu, C++ wird also noch komplexer. 🙄



  • [ ]Du hast Ahnung von C++.
    Aufjedenfall danke für den informativen Artikel! 🙂



  • Na toll, dann ist also nächstes Jahr ein wenig Lernerei angesagt um C++-technisch nicht "old school" zu programmieren. Die Artikel werde ich mir zu gegebener Zeit mal als gute Zusammenfassung reinziehen. Danke dafür 🙂 .



  • Artchi schrieb:

    rüdiger! Es gibt mittlerweile ein sogenanntes Feature-Pack für MSVS2008 von MS als Beta, in dem auch ein TR1 drin ist. Das Final soll noch in diesem Quartal raus kommen.

    Teilweise enthalten 😉 wenn ich das richtig im Kopf habe



  • struct schaut so aus...

    struct enttaeuscht
    {
    int a: 4;
    //..
    } // ohne ;   echt blöder Stil
    


  • Das fehlende Semikolon ist doch logisch. Bei Funktionen machst du sowas auch nicht hin.



  • Enttäuschter schrieb:

    Juhu, C++ wird also noch komplexer. 🙄

    ich find's auch völlig unverständlich, wie man die komplexeste programmiersprache der welt noch weiter aufmotzen kann. ist halt nur noch was für super-nerds.

    --> C++ shows all signs of following the Harley Davidson Design Methodology - "If it breaks, make it bigger. If it sticks out, chrome it."
    🙂



  • Optimizer schrieb:

    Das fehlende Semikolon ist doch logisch.

    eben nicht.

    im aktuellen c++ standard macht man ein ";" hin.



  • Hmmm... mir war gar nicht klar dass es so viel neue Syntax geben wuerde, irgendwie bin ich nicht so begeistert davon. Die Features verstaerken zwar die Ausdrucksstaerke, aber verlangen noch mehr Einarbeitungszeit fuer einen Frischling...

    Jedenfalls danke fuer den Artikel :)NRVO



  • Blue-Tiger schrieb:

    Hmmm... mir war gar nicht klar dass es so viel neue Syntax geben wuerde, irgendwie bin ich nicht so begeistert davon. Die Features verstaerken zwar die Ausdrucksstaerke, aber verlangen noch mehr Einarbeitungszeit fuer einen Frischling...

    naja, der frischling wird wohl eher locker an die sache rangehen und muss nicht alles in kurzer zeit lernen. wirklich probleme werden wohl eher die leute kriegen, die sich etwas mehr zutrauen aber noch nicht absolut sattelfest sind. gerade von solchen, die c++ beruflich nutzen müssen, wird wohl so mancher wutausbruch zu erwarten sein. mir isses egal, soll sich c++ ruhig sein eigenes grab schaufeln.
    🙂



  • Viele Sprachfeatures (vorallem die Variadic-Templates, Concepts) werden eher für Library-Entwickler interessant sein. Und das sind eigentlich auch die (meiner Meinung nach) komplexeren neueren Features. Viele C++-Einsteiger werden eher Anwendungen entwickeln und nicht eine Library. D.h. sie werden sich mit den komplexeren Themen garnicht auseinander setzen müssen. Das ist ja auch heute schon so mit den Templates. Als Anfänger benutzt man doch eher fertige Templates aus der Std-Library und das ist doch recht einfach, oder? Und hier machen die Concepts es sogar noch einfacher für einen Template-Anwender, weil er bei einer Falschbenutzung verständlichere Fehlermeldungen erhält.

    Irgendwann wird der nächste Step für einen Template-Anwender sein, das er vielleicht selber Templates und somit Libraries entwickelt. Dann wird er natürlich auf die vielen Features stossen. Gut, er wird natürlich viel lernen müssen. Aber auch nicht alles auf einmal. Es ist ja immer ein Lernprozess dahinter.

    Übrigens, ich sehe es eigentlich nüchtern: andere Sprachen haben weniger Sprachfeatures ggü. C++, aber sie gleichen das mit viel Tools und Frameworks wieder aus. Und diese muß man ja auch lernen. Wir benutzen hier auf Arbeit die OSGi und Eclipse Platform, da wird das Classloading u.ä. total anders gehandhabt, als in der Standard-Java-Runtime. Es ist also eine Erweiterung an der Basis, wenn auch nicht an der Sprache. Jemand der Java kann, muß diese Erweiterung von OSGi und Eclipse ebenfalls zusätzlich lernen, um in unseren Projekten mitarbeiten zu können. Aber lernen muß man immer. Im C++09 wirds halt die Features in der Sprache geben.



  • Artchi schrieb:

    Gut, er wird natürlich viel lernen müssen. Aber auch nicht alles auf einmal.

    so wie ein chinese seine ca. 90000 schriftzeichen. 😃
    🙂



  • Und C++ wird nicht komplexer. die neuen features sind allesamt Lösungen für Hacks die in der vergangenheit verwendet wurden.
    Variadic templates sind endlich eine Lösung für probleme die bislang mit Preprocessor librarys gelöst werden mussten. Halt der Klassische Fall: eine funktion für 0-n argumente. Und der hack ist wesentlich komplizierter als Variadic templates.



  • otze schrieb:

    die neuen features sind allesamt Lösungen für Hacks die in der vergangenheit verwendet wurden.

    aber die alten hacks bleiben allesamt erhalten, oder?
    🙂



  • Nö, die kannst du ja jetzt durch die neuen Sprachfeatures ersetzen.



  • Vielen Dank für den Artikel, ich habe noch eine Frage: Wieso hast du nichts zu dem Garbage-Collector geschrieben, der ja wenigstens geplant war? Wird der im endgültigen Standard doch nicht enthalten sein (hoffentlich :D) oder hat das andere Gründe?

    Felix



  • In C++09 wird der soweit ich weiß nicht drin sein.


Anmelden zum Antworten