Articles of c ++ 11

Ist string :: c_str () in C ++ 11 nicht mehr null-terminiert?

In C ++ 11 ist basic_string::c_str genau gleich wie basic_string::data , das wiederum genau so definiert ist wie *(begin() + n) und *(&*begin() + n) (wenn 0 <= n < size() ). Ich kann nichts finden, bei dem die Zeichenfolge am Ende immer ein Nullzeichen haben muss. Bedeutet dies, dass c_str() nicht mehr garantiert eine […]

Was macht einen gültigen Zustand für ein “bewegt von” -Objekt in C ++ 11 aus?

Ich habe versucht, meinen Kopf darum zu drehen, wie die Bewegungssemantik in C ++ 11 funktionieren soll, und ich habe große Schwierigkeiten damit zu verstehen, welche Bedingungen ein verschobenes Objekt erfüllen muss. Ein Blick auf die Antwort hier triggers meine Frage nicht wirklich, weil ich nicht sehen kann, wie man sie sinnvoll auf Pimpl-Objekte anwendet, […]

std :: thread pass by reference ruft Kopierkonstruktor auf

Nun, ich habe ein Problem mit der Weitergabe von Daten in einen Thread mit std :: thread. Ich dachte, ich verstehe die allgemeine Semantik von Kopierern usw., aber es scheint, dass ich das Problem nicht ganz verstehe. Ich habe eine einfache class namens Log, die ihren Kopierkonstruktor so versteckt hat: class Log { public: Log(const […]

Soll der nachfolgende Rückgabetypsyntaxstil der Standard für neue C ++ 11-Programme werden?

C ++ 11 unterstützt eine neue functionssyntax: auto func_name(int x, int y) -> int; Derzeit würde diese function wie folgt deklariert werden: int func_name(int x, int y); Der neue Stil scheint noch nicht weit verbreitet zu sein (sagen wir in der gcc stl) Sollte dieser neue Stil jedoch überall in neuen C ++ 11-Programmen bevorzugt […]

Wie zeichne ich ein unique_ptr in einen Lambda-Ausdruck ein?

Ich habe Folgendes versucht: std::function getAction(std::unique_ptr &&psomething){ //The caller given ownership of psomething return [psomething](){ psomething->do_some_thing(); //psomething is expected to be released after this point }; } Aber es kompiliert nicht. Irgendwelche Ideen? AKTUALISIEREN: Wie bereits erwähnt, ist eine neue Syntax erforderlich, um explizit anzugeben, dass wir das Eigentumsrecht auf das Lambda übertragen müssen. Ich […]

Erstellen Sie N-Element-Constexpr-Array in C ++ 11

Hallo ich lerne C ++ 11, ich frage mich, wie man eine constexpr 0 bis n-Array, zum Beispiel: n = 5; int array[] = {0 … n}; So Array kann {0, 1, 2, 3, 4, 5}

Wie man einen Modulo (%) Operator in C / C ++ / Obj-C, der negative Zahlen behandelt, codiert

Einer meiner Lieblingshetze von C-abgeleiteten Sprachen (als ein Mathematiker) ist das (-1) % 8 // comes out as -1, and not 7 fmodf(-1,8) // fails similarly Was ist die beste Lösung? C ++ erlaubt die Möglichkeit, Vorlagen und Operatoren zu überladen, aber beides sind trübe Gewässer für mich. Beispiele dankbar erhalten.

Was ist der Unterschied zwischen std :: move und std :: forward

Ich habe das hier gesehen: Move Constructor, der die Basisklasse Move Constructor aufruft Könnte jemand erklären: der unterschied zwischen std::move und std::forward , vorzugsweise mit einigen code-Beispielen? Wie man leicht darüber nachdenkt, und wann man welches benutzt

Was sind die Vorteile von nullptr?

Dieses Stück Code macht konzeptionell dasselbe für die drei pointers (sichere pointersinitialisierung): int* p1 = nullptr; int* p2 = NULL; int* p3 = 0; Und was sind die Vorteile der Zuweisung von pointersn nullptr gegenüber dem Zuweisen der Werte NULL oder 0 ?

Wie aktiviere ich C ++ 11 in gcc?

Ich benutze gcc 4.8.1 von http://hpc.sourceforge.net auf Mac OSX Mountain Lion. Ich versuche, ein C ++ – Programm zu kompilieren, das die function to_string in . Ich muss jedes Mal das Flag -std=c++11 : g++ -std=c++11 -o testcode1 code1.cpp Gibt es eine Möglichkeit, dieses Flag standardmäßig einzufügen?