Articles of c ++ 11

Was passiert, wenn Sie einen ungültigen static_cast-Wert für die enum-class eingeben?

Betrachten Sie diesen C ++ 11-Code: enum class Color : char { red = 0x1, yellow = 0x2 } // … char *data = ReadFile(); Color color = static_cast(data[0]); Nehmen wir an, dass Daten [0] tatsächlich 100 sind. Was ist die Farbeinstellung gemäß dem Standard? Vor allem, wenn ich es später tue switch (color) { […]

Sequence-Zip-function für C ++ 11?

Mit der neuen range-basierten for-Schleife können wir Code schreiben wie for(auto x: Y) {} Welche IMO ist eine große Verbesserung von (z. B.) for(std::vector::iterator x=Y.begin(); x!=Y.end(); ++x) {} Kann es verwendet werden, um zwei simultane Loops zu durchlaufen, wie die Pythons- zip function? Für diejenigen, die Python nicht kennen: Y1 = [1,2,3] Y2 = [4,5,6,7] […]

Erlaubt C ++ 11 den Vektor ?

Containeranforderungen haben sich von C ++ 03 zu C ++ 11 geändert. Während C ++ 03 pauschale Anforderungen hatte (z. B. Kopie-Konstruierbarkeit und Zuordnungsfähigkeit für Vektor), definiert C ++ 11 feinkörnige Anforderungen für jede Containeroperation (Abschnitt 23.2). Daher können Sie zB einen Typ speichern, der kopierfähig, aber nicht zuweisbar ist, wie z. B. eine Struktur […]

Warum unterstützt C ++ 11 bestimmte Initialisierungslisten nicht als C99?

Erwägen: struct Person { int height; int weight; int age; }; int main() { Person p { .age = 18 }; } Der obige Code ist in C99 legal, in C ++ 11 jedoch nicht legal. Was ist der Grund dafür, dass C ++ 11 solch eine nützliche function nicht unterstützt?

Ist Pass-by-Value ein angemessener Standard in C ++ 11?

Im herkömmlichen C ++ ist die Übergabe von Werten an functionen und Methoden für große Objekte langsam und im Allgemeinen verpönt. Stattdessen tendieren C ++ – Programmierer dazu, Referenzen zu übergeben, was zwar schneller ist, aber alle möglichen komplizierten Fragen rund um die Eigentümerschaft und speziell die Speicherverwaltung einführt (falls das Objekt Heap-allokiert ist). Nun, […]

Kann ich einen autonomen `self’-Membertyp in C ++ implementieren?

C ++ fehlt das Äquivalent von PHPs self Schlüsselwort , das den Typ der einschließenden class auswertet. Es ist einfach genug, um es pro class zu fälschen: struct Foo { typedef Foo self; }; aber ich musste Foo nochmal schreiben. Vielleicht werde ich das eines Tages falsch verstehen und einen stillen Fehler verursachen. Kann ich […]

Wie viel ist zu viel mit C ++ 11 Auto Keyword?

Ich habe das neue auto Schlüsselwort verwendet, das im C ++ 11-Standard für komplizierte Template-Typen verfügbar ist, wofür ich glaube, dass es dafür entwickelt wurde. Aber ich benutze es auch für Dinge wie: auto foo = std::make_shared(); Und skeptischer für: auto foo = bla(); // where bla() return a shared_ptr Ich habe nicht viel Diskussion […]

Wie beende ich einen Thread in C ++ 11?

Ich muss den Thread nicht korrekt beenden oder auf einen Befehl “Beenden” reagieren lassen. Ich bin daran interessiert, den Thread mit reinem C ++ 11 zu beenden.

Was ist std :: move () und wann sollte es verwendet werden?

Was ist es? Was tut es? Wann sollte es verwendet werden? Gute Links werden geschätzt.

Unterstützt C ++ Variable Length Arrays?

Nein, warte, ertrage mich … VLAs waren immer eine GCC-Erweiterung, aber sie wurden von C99 übernommen: [C99: 6.7.5.2/4]: Wenn die Größe nicht vorhanden ist, ist der Array-Typ ein unvollständiger Typ. Wenn die Größe * ist, anstatt ein Ausdruck zu sein, ist der Array-Typ ein Array-Typ variabler Länge mit nicht spezifizierter Größe, der nur in Deklarationen […]