Die meisten Compiler unterstützen bereits C++0x . Haben Sie mit der Verwendung von C++0x begonnen oder warten Sie auf die Definition von x? Ich muss meinen Code überarbeiten; sollte ich mit der Nutzung der neuen Funktionen beginnen?
Antworten
Zu viele Anzeigen?C++0x ist noch kein fertiger Standard. Es ist wahrscheinlich, dass es noch viele Überarbeitungen geben wird, bevor ein international anerkannter Standard veröffentlicht wird. Es hängt also alles davon ab, wofür Sie den Code schreiben? Wenn es sich um einen Arbeitsauftrag handelt, würde ich bei regulärem C++ bleiben, auf den Standard warten und der Programmiergemeinschaft die Zeit geben, die sie braucht, um sich anzupassen. Refaktorieren Sie keinen Code, den Sie unbedingt implementieren müssen, das könnte Ihnen eine Menge Ärger bereiten.
Ich finde C++0x jedoch großartig, um damit herumzuspielen, und es kann auch nicht schaden, mit der Syntax vertraut zu sein, wenn 0x global akzeptiert wird.
Aus dem Link, den Sie angegeben haben, geht hervor, dass Sie eigentlich Folgendes meinen TR1 , nicht wirklich C++0x. Und ja Ich verwende die meisten der neuen TR1-Bibliotheken schon seit einiger Zeit, da viele von ihnen ehemalige Boost Bibliotheken.
Und ich kann nur jeden ermutigen, sie auch zu nutzen.
Ich würde mit dem Schreiben von Produktionscode warten, bis '0x+y, wobei y bedeutet, dass sie die Bugs aus dem Compiler herausarbeiten und ihn in die Standardkompatibilität bringen (was auch immer der Standard sein mag).
Aber für die Entwicklung? Ich benutze es zum Herumspielen, Schreiben projekt euler usw. Ich verwende es auch für Präsentationen und Newsgroups.
Es gibt nur sehr wenige Compiler, die etwas unterstützen. Eigentlich VS unterstützt nur TR1-Bibliotheken, gcc unterstützt einige Funktionen wie variadic templatres, rvalue, auto und einige mehr. Intel Compiler hat einige.
Ich habe vor allem mit variablen Vorlagen wie:
#ifdef HAvE_VARIADIC
template<typename... Args>
void format(std::string,Args... args);
#else
template<typename T1>
void format(std::string,T1 p1);
template<typename T1,typename T2,>
void format(std::string,T1 p1,T2 p2);
...
template<typename T1,typename T2,...,typename T10>
void format(std::string,T1 p1,T2 p2,..., T10 p10);
#endif
- See previous answers
- Weitere Antworten anzeigen