Verwendung von C ++ 11 in einer Produktionsumgebung mit GCC [geschlossen]

8

C ++ 11 bietet uns eine Menge neuer, großartiger und immens nützlicher Werkzeuge. GCC-Unterstützung von C ++ 11 hat bereits gute Fortschritte gemacht. Also habe ich überlegt wann ich zu C ++ 11 wechseln soll. Diese Frage bezieht sich nur auf gcc, ich erwarte nicht, meinen (unseren) Code mit irgendeinem anderen Compiler zu kompilieren.

Würden Sie (haben Sie) zu C ++ 11 gewechselt, bevor gcc den gesamten C ++ 11-Standard unterstützt, um von den bereits implementierten Funktionen zu profitieren? Würden Sie dies immer noch in einer Produktionsumgebung tun, in der Stabilität und Korrektheit sehr wichtig sind? Denkst du, es wäre ein vernünftiger Ansatz, Entwicklern zu erlauben, nur bestimmte C ++ 11-Funktionen zu verwenden?

Wie würden Sie entscheiden, wann die Unterstützung von GCCs C ++ 11 für eine Produktionsumgebung bereit ist?

(Hinweis: Ich kenne diese Frage, aber sie bezieht sich speziell auf gcc 4.4 und ist etwas veraltet.)

    
Gabriel Schreiber 20.11.2011, 14:30
quelle

2 Antworten

9

Kommt darauf an.

Wenn es meinen Blog oder so etwas antreiben würde? Definitiv.

Wenn es um einen kritischen Dienst geht? Natürlich nicht.

Ich glaube, dass die Unterstützung von C ++ 11 zu unreif ist, so wie es jetzt ist, produktionsbereit zu sein.

Sie können sich auf eine Version von gcc festlegen, aber die Wahrheit ist, dass die folgenden Entwürfe entwickelt wurden, als neue Probleme entdeckt und angegangen wurden. Der Code, den Sie jetzt schreiben, wird möglicherweise von einer späteren Version abgelehnt, oder das Verhalten kann sich leicht ändern .

Deshalb glaube ich, dass dieses Urteil wirklich davon abhängt, was Sie vorhaben zu tun. Es gibt einen Grund, warum das Space Shuttle von einer alten und bewährten Technologie angetrieben wird: Es ist eine Frage des Kompromisses zwischen einfacher Entwicklung und Vertrauen in die Werkzeuge.

Es ist dein Urteil, du kennst deine Situation besser als wir.

    
Matthieu M. 20.11.2011, 14:49
quelle
5

Die C ++ - Entwickler von GCC denken immer noch, dass ihre C ++ 03-Unterstützung nicht auf dem neuesten Stand ist, und setzen daher die __cplusplus-Version nicht einmal richtig ein (Zitat benötigt, ich kann den Fehler + Diskussion nachschlagen). Sie haben die Unterstützung als experimentell bezeichnet, weil sie mit der Implementierung der Grundlagen begonnen haben, bevor es einen endgültigen Entwurf / Standard gab. Bis jetzt (dh GCC 4.6) wurden die meisten größeren Fehler beseitigt, obwohl einige Details nicht mit dem genauen Standardwortlaut übereinstimmen.

Wenn möglich, sollten Sie auch mit Clang testen, was IMHO anstrebt und es gelingt, die kleinen Details an den meisten Orten besser zu befolgen, an denen GCC nicht die notwendige Durchsetzung hat. Produktionsnutzung ist etwas Persönliches. Ich denke, dass jeder Compiler Bugs hat, und obwohl die Wahrscheinlichkeit eines Bugs in den "neuen Sachen" statistisch wahrscheinlich höher ist, besteht die Möglichkeit, dass Sie einen älteren Bug bekommen, der mit Ihrem vollkommen konformen Code unordentlich ist. Deshalb schlage ich vor, mindestens zwei Compiler zu verwenden, um Inkompatibilitäten zu vermeiden (oder sie zumindest so weit wie möglich zu reduzieren).

Wie für die Standard-Bibliothek ist libstdc ++ größtenteils funktionsfähig, aber es fehlen einige große und nützliche Teile wie <regex> , was traurig ist. Wenn Sie Glück haben, sollten Sie in der Lage sein, LLVM libc ++ auf mindestens Linux und Mac arbeiten zu lassen. Dies ist ein Feature, das komplett ist. C ++ 11 Bibliothek minus <atomic> ), sondern auch das "neue Kind auf dem Block".

Um es zusammenzufassen: Je mehr Compiler und Standardbibliotheken Sie Ihren Code gegen den besseren laufen lassen (obwohl Sie überprüfen sollten, welche korrekt sind und welche fehlerhaft sind). Dies reduziert unweigerlich die Menge an C ++ 11-Funktionen, die Ihnen zur Verfügung stehen, wenn Sie jedoch mit GCC / Clang arbeiten, fallen nur Lambdas, einheitliche Initialisierer und <atomic> außerhalb Ihres Geltungsbereiches. MSVC ist eine andere Geschichte ...

    
rubenvb 20.11.2011 14:54
quelle