Articles of c ++ 11

C ++ Module – warum wurden sie aus C ++ 0x entfernt? Werden sie später zurück sein?

Ich habe gerade diesen alten C ++ 0x-Entwurf über Module in C ++ 0x entdeckt. Die Idee bestand darin, aus dem aktuellen .h / .cpp-System auszusteigen, indem nur CPP-Dateien geschrieben wurden, die dann beim Kompilieren Moduldateien erzeugten, die dann wiederum von den anderen CPP-Dateien verwendet wurden. Das sieht nach einem wirklich tollen Feature aus. Aber […]

Welche Regeln gelten für die automatische Generierung von Verschiebeoperationen?

In C ++ 98 könnte der C ++ – Compiler automatisch einen Kopierkonstruktor und einen Kopierzuweisungsoperator über eine elementweise Kopie erzeugen, z struct X { std::string s; std::vector v; int n; }; Der Compiler generiert automatisch den Kopierkonstruktor und den Kopierzuweisungsoperator für X unter Verwendung der elementweisen Kopie. Aber wie ändert sich die Situation in […]

Was bedeutet thread_local in C ++ 11?

Ich bin verwirrt mit der Beschreibung von thread_local in C ++ 11. Mein Verständnis ist, jeder Thread hat eine eindeutige Kopie von lokalen Variablen in einer function. Auf die globalen / statischen Variablen kann von allen Threads zugegriffen werden (möglicherweise synchronisierter Zugriff unter Verwendung von Sperren). Und die Variablen thread_local sind für alle Threads sichtbar, […]

Wie kann ich Standard Library (STL) -classn in meiner DLL-Schnittstelle oder ABI verwenden?

Es gab vorher einige Fragen zum Exportieren einer class, die STL-classn in Bezug auf Visual Studio-Warnung C4251 enthält: ZB diese Frage oder diese Frage. Ich habe die exzellente Erklärung bereits bei UnknownRoad gelesen. Die Warnung blind zu deaktivieren scheint ein wenig gefährlich zu sein, obwohl es eine Option sein könnte. Alle diese Std-classn zu verpacken […]

Was bedeutet “default” nach einer functionsdeklaration einer class?

Ich habe gesehen, dass der default neben den functionsdeklarationen in einer class verwendet wird. Was tut es? class C { C(const C&) = default; C(C&&) = default; C& operator=(const C&) & = default; C& operator=(C&&) & = default; virtual ~C() { } };

Wann sollte std :: forward verwendet werden, um Argumente weiterzuleiten?

C ++ 0x zeigt ein Beispiel für die Verwendung von std::forward : template void foo(T&& arg) { bar(std::forward(arg)); } Wann ist es vorteilhaft, std::forward immer zu verwenden? Außerdem muss && in der Parameter-Deklaration verwendet werden, ist es in allen Fällen gültig? Ich dachte, du hättest Provisorien an eine function übergeben müssen, wenn die function mit […]

std :: next_permutation Implementierung Erläuterung

Ich war neugierig, wie std:next_permutation implementiert wurde, also extrahierte ich die gnu libstdc++ 4.7 Version und bereinigte die Bezeichner und Formatierung, um die folgende Demo zu erzeugen … #include #include #include using namespace std; template bool next_permutation(It begin, It end) { if (begin == end) return false; It i = begin; ++i; if (i == […]

Wie lauten die Regeln für das Token “…” im Kontext variadischer Vorlagen?

In C ++ 11 gibt es variadische Vorlagen wie diese: template unique_ptr make_unique( Args&&… args ) { return unique_ptr(new T(std::forward(args)…)); } Es gibt einige Besonderheiten: Der Ausdruck std::forward(args)… verwendet sowohl Args als auch Args aber nur ein … token. Außerdem ist std::forward eine nicht-variadische Template-function, die nur einen Template-Parameter und ein Argument verwendet. Was sind […]

C ++ Qt – Wie fügt man “-std = c ++ 11” zum Makefile hinzu, das von qmake erzeugt wird?

Ich entwickle ein Programm in Qt. Sein Makefile wird automatisch aus der .pro-Datei generiert. Ich brauche etwas Code, der das -std = c ++ 11 Flag benötigt, um für g ++ eingerichtet zu werden. Wo in .pro sollte ich diese Flagge hinzufügen? (Nur das Makefile zu ändern wird nicht funktionieren, da es jedes Mal, wenn […]

Delegate Konstruktor C ++

Mache ich das richtig? Ich versuche, einen C ++ – classnkonstruktor zu delegieren, da es im Grunde den gleichen Code ist, der sich dreimal wiederholt. Ich las auf C ++ x11 und las, dass g ++ 4.7.2 dies erlaubt, aber ich bin mir nicht sicher, ob ich es tue Recht: Bitmap::Bitmap(HBITMAP Bmp) { //Construct some […]