c++0x compiler?



  • Hallo Leute,

    gib es bereits Compiler, die mit den neuen Standards "c++0x" klar kommen?



  • Also, erstmal gibt es im Moment einen Entwurf der sagt, wie der kommende Standard aussehen könnte. Dieser befindet sich in der "Bug-Fixing"-Phase. Beispielsweise wird sich die Spezifikation von std::tuple nochmal etwas ändern, weil dort ein paar Fehler und Unklarheiten drin sind. Das gröbste steht aber soweit und wir erwarten keine großen Änderungen mehr.

    Es gibt verschiedene Compiler, die C++0x teilweise unterstützen. Beim GCC muss man dies explizit mit dem Schalter -std=c++0x aktivieren. Welcher Compiler was genau unterstützt kann man auf diversen Listen nach gucken, die sich mit einer kleinen Suchanfrage relativ leicht finden lassen.

    kk



  • Die bekannten Compiler (z.B. GCC und MSC) unterstützen schon relativ viele C++0x-Eigenschaften. Besonders die, die sicherlich nicht nochmal geändert werden. Vieles ist auch schon durch den TR1 vorgearbeitet worden, so das besonders im Library-Bereich keine großen Anstrengungen nötig sind.

    Wenn mein ein eigenes geschlossenes Projekt hat, kann schon mal die C++0x-Eigenschaften seines Compilers nutzen.



  • Hier gibt es einen Vergleich zwischen verschiedenen Compilern http://wiki.apache.org/stdcxx/C++0xCompilerSupport

    Der GCC scheint da am meisten zu unterstützen. Hier gibt es noch einmal eine Liste für den GCC: http://gcc.gnu.org/projects/cxx0x.html



  • Artchi schrieb:

    ...Vieles ist auch schon durch den TR1 vorgearbeitet worden, so das besonders im Library-Bereich keine großen Anstrengungen nötig sind...

    ...wobei TR1 auf C++98 Basis spezifiziert wurde und die Bibliothek sozusagen noch C++0xifiziert werden musste (Mit variadischen Templates, Rvalue-Referenzen und co). "keine großen Anstrengungen" ist wahrscheinlich untertrieben. 🙂



  • krümelkacker schrieb:

    Beispielsweise wird sich die Spezifikation von std::tuple nochmal etwas ändern, weil dort ein paar Fehler und Unklarheiten drin sind.

    Lol. Ich wollte gerade eine Frage zu C++0x bzw. Tuples à la TR1 stellen und nun muss ich sowas lesen.

    Wenn du einen Compiler mit C++0x suchst, kommst du wohl um einen sehr experimentellen GCC nicht herum. Für ein aktuelles Projekt nehme ich eine Schrittweise Portierung nach C++0x (wirklich nur sehr eingeschränkt, zuerst muss ich lernen, wie man damit umgeht) mit Visual C++ 2010 vor, wo zumindest das neue auto , Lambda usw. auch schon drin sind.

    Ich kann damit schon einige elegante Sachen machen, aber ein echter C++0x Compiler lässt wohl noch einige Zeit auf sich warten... 😉



  • Edit: Yeah, double post -.-



  • /rant/ schrieb:

    Wenn du einen Compiler mit C++0x suchst, kommst du wohl um einen sehr experimentellen GCC nicht herum.

    😕 Nö. Schau dir die von mir verlinkte Liste an. GCC 4.5 ist das aktuelle stabile Release. Also nichts mit "sehr experimentell".



  • /rant/ schrieb:

    krümelkacker schrieb:

    Beispielsweise wird sich die Spezifikation von std::tuple nochmal etwas ändern, weil dort ein paar Fehler und Unklarheiten drin sind.

    Lol. Ich wollte gerade eine Frage zu C++0x bzw. Tuples à la TR1 stellen und nun muss ich sowas lesen.

    Im Prinzip gibt es nur ein paar Unstimmigkeiten bzgl Referenz-Elementen, also für Typen wie tuple<int&,double&> etc. Beispiele:

    string s = "123";
    tuple<string>  x = tie(s); // #1
    tuple<string&> y = tie(s); // #2
    

    Hierbei liefert tie(s) ein temporäres Objekt vom Typ tuple<string&> .

    | #1                           | #2
    ------------------+------------------------------+----------------------
    Aktueller Entwurf | string wird move-konstruiert | kompiliert nicht
                      | und s wird der Inhalt dabei  |
                      | geklaut.                     |
                      |                              |
    Kommender Bugfix  | string wird kopiert und s    | kompiliert, get<0>(y)
                      | bleibt unverändert.          | bezieht sich auf s
    

    kk



  • Danke vür die vielen Antworten. 😋

    @ rüdiger
    Genau so eine Liste hab ich gesucht 🙂

    Hab da aber noch zwei Fragen:

    1. Gilt das was in der Liste aufgeführt ist denn jetzt als fest oder kann sich das auch nochmal ändern?
    2. Steht jetzt entgülig fest, dass C++0x zu C++11 wird? Ich les überall was anderes 😕



  • NEO.PIXEL schrieb:

    Gilt das was in der Liste aufgeführt ist denn jetzt als fest oder kann sich das auch nochmal ändern?

    Klar, da kann sich noch etwas ändern. Das sind dann aber wahrscheinlich Details, die nichts an der Grundidee verändern. Du kannst Dich aber nicht darauf verlassen, dass wenn Du jetzt C++0x Features nutzt, dass Dein Programm dann später noch funktioniert. Es ist aber eher unwahrscheinlich, dass Korrekturen des Entwurfs/Standards Dein Programm beeinflussen werden.

    NEO.PIXEL schrieb:

    Steht jetzt entgülig fest, dass C++0x zu C++11 wird?

    Nein. Es steht nichts endgültig fest. Es ist eine Frage der Wahrscheinlichkeit. So, wie ich das mitbekommen habe, wird's C++11 wenn alles glatt läuft oder eben C++12 bei einer noch nicht abzusehenden "Hürde".



  • Ok.. Ja dann wollen wir mal auf das Beste hoffen 😉


Anmelden zum Antworten