Articles of c ++ 11

Was ist der Typ von Lambda, wenn mit “Auto” in C ++ 11 abgeleitet?

Ich hatte die Vorstellung, dass der Typ eines Lambdas ein functionszeiger ist. Als ich den folgenden Test durchgeführt habe, fand ich es falsch ( Demo ). #define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto pAuto = LAMBDA; // ok assert(typeid(pFptr) == […]

Was sind die richtigen Linkoptionen, um std :: thread in GCC unter Linux zu verwenden?

Hi ich versuche std::thread mit G ++ zu verwenden. Hier ist mein Testcode #include #include int main(int, char **){ std::thread tt([](){ std::cout<<"Thread!"<<std::endl; }); tt.join(); } Es kompiliert, aber wenn ich versuche, es auszuführen, ist das Ergebnis: terminate called after throwing an instance of ‘std::system_error’ what(): Operation not permitted Aborted Meine Compiler-Version: $ g++ –version g++ […]

Zeit Hashwert der Zeichenfolge kompilieren

Ich habe an einigen verschiedenen Stellen gelesen, dass es mit den neuen String-Literalen von C ++ 11 möglich ist, den Hash einer Zeichenkette zur Kompilierzeit zu berechnen. Aber niemand scheint bereit zu sein, zu sagen, dass es möglich sein wird oder wie es gemacht werden würde. Ist das möglich? Wie würde der Operator aussehen? Ich […]

Wird std :: string in C ++ 11 immer null-terminiert?

In einem Beitrag von 2008 auf seiner Seite sagt Herb Sutter Folgendes: Es gibt einen aktiven Vorschlag, um dies in C ++ 0x weiter zu verschärfen und eine Null-Beendigung zu fordern und möglicherweise Copy-on-Write-Implementierungen aus Gründen der Parallelität zu verbieten. Hier ist das Papier: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html . Ich denke, dass einer oder beide der Vorschläge in […]

Warum kein Standard-move-assignment / move-constructor?

Ich bin ein einfacher Programmierer. Meine classnmitgliedervariablen bestehen meistens aus POD-Typen und STL-Containern. Aus diesem Grund muss ich selten Zuweisungsoperatoren oder Kopierkonstruktoren schreiben, da diese standardmäßig implementiert sind. Wenn ich dazu std::move on Objekte verwende, die nicht beweglich sind, verwendet es den Zuweisungsoperator, was bedeutet, dass std::move absolut sicher ist. Da ich ein einfacher Programmierer […]

Wann können äußere Klammern in einer Initialisierungsliste weggelassen werden?

Ich habe Fehler C2078 in VC2010 beim Kompilieren des Codes unten. struct A { int foo; double bar; }; std::array a1 = // error C2078: too many initializers { {0, 0.1}, {2, 3.4} }; // OK std::array a2 = {0.1, 2.3}; Ich habe herausgefunden, dass die korrekte Syntax für a1 ist std::array a1 = {{ […]

Was ist die korrekte Art der Verwendung von C ++ 11 für den Bereich?

Was ist die korrekte Art der Verwendung von C ++ 11 für den Bereich? Welche Syntax sollte verwendet werden? for (auto elem : container) oder for (auto& elem : container) oder for (const auto& elem : container) ? Oder etwas anderes?

Wie kann ich einen Standardbibliothekscontainer in C ++ 11 effizient auswählen?

Es gibt ein bekanntes Bild (Spickzettel) namens “C ++ Container choice”. Es ist ein Flussdiagramm, um den besten Container für die gewünschte Verwendung auszuwählen. Weiß jemand, ob es schon eine C ++ 11-Version davon gibt? Dies ist der vorherige:

Warum nehmen C ++ 11 gelöschte functionen an der Überladungsauflösung teil?

Warum macht C ++ 11 ” delete d” -functionen bei der Überladungsauflösung mit ? Warum ist das nützlich? Oder mit anderen Worten, warum werden sie versteckt anstatt komplett gelöscht zu werden?

Wie kann ich nach C ++ 11-Unterstützung suchen?

Gibt es eine Möglichkeit, zur Kompilierzeit festzustellen, ob der Compiler bestimmte functionen von C ++ 11 unterstützt? Zum Beispiel so etwas: #ifndef VARIADIC_TEMPLATES_SUPPORTED #error “Your compiler doesn’t support variadic templates. :(” #else template class Tuple { // … } #endif