2012-05-29 8 views
6

Nach Google C++ Style Guide, no C++11 feature is approved.Warum verbietet Google C++ 11 und investiert gleichzeitig in Clang?

Auf der anderen Seite scheint es, dass Clang (in denen Google investiert Ressourcen) ist sehr weit fortgeschritten in its C++11 support.

Das scheint irgendwie wie ein Widerspruch ... weiß jemand, warum ist das?

+2

Clang hat mehr Verwendungen als C++ 11. –

+3

Nur weil sie derzeit keine C++ 11-Funktionen zulassen, heißt das nicht, dass sie sie in Zukunft nicht möchten. Durch die Investition in die Compilerentwicklung wird der Fortschritt in Richtung einer vollständig konformen C++ 11-Implementierung vorangetrieben, und je früher dies geschieht, desto früher können sie tatsächlich mit der Verwendung der Features beginnen, ohne sich um ungeprüfte Features kümmern zu müssen. –

+1

Wenn diese Frage nicht zu SO passt, löschen Sie sie. –

Antwort

10

Die Gründe dafür werden in der

Die C++ 11-Standard ist als sein Vorgänger wesentlich komplexer Abschnitt cons buchstabiert (1.300 Seiten im Vergleich zu 800 Seiten), und ist für viele Entwickler unfamilar. Die langfristigen Auswirkungen einiger Funktionen auf die Lesbarkeit und Wartung von Codes sind nicht bekannt. Wir können nicht vorhersagen, wann die verschiedenen Features von Werkzeugen, die von Interesse sind, einheitlich implementiert werden (gcc, icc, clang, Eclipse usw.).

Wenn ich zusammenfassen müsste, wäre es, dass sie sich mit den neuen Funktionen abwarteten. Sie möchten die negativen Effekte sehen (und es wird einige geben), bevor sie die Features tief in die Codebasis integrieren

+1

Sie erwähnen "Auto", was, während ich es verdammt liebe, wirklich die Lesbarkeit zerstören kann. – TeaOverflow

+4

@Evgeni Benutze C# mehr als C++ und du würdest 'var' aus meinen kalten, toten Fingern hacken :) – JaredPar

+4

Wenn irgendetwas aus diesem Dokument der Beweis war, dass sie warten dann war dieser Teil unter Entscheidung: war. "Vermeiden Sie es, Code zu schreiben, der mit C++ 11 nicht kompatibel ist (obwohl er in C++ 03 funktioniert)." – Joe