Articles of c ++ 11

Wählen Sie zwischen std :: map und std :: unordered_map

Nun, da std eine echte Hash–Map in unordered_map , warum (oder wann) würde ich immer noch die gute alte map über unordered_map auf Systemen verwenden wollen, auf denen sie tatsächlich existiert? Gibt es irgendwelche offensichtlichen Situationen, die ich nicht sofort sehen kann?

So implementieren Sie Multithread-sicheres Singleton in C ++ 11, ohne zu verwenden

Jetzt, da C ++ 11 Multithreading hat, habe ich mich gefragt, was der richtige Weg ist, um lazy initialisiertes Singleton ohne Mutex zu implementieren (aus Gründen der Performance). Ich habe mir das ausgedacht, aber ich bin nicht wirklich gut darin, lockfreien Code zu schreiben, also suche ich nach besseren Lösungen. // ConsoleApplication1.cpp : Defines the […]

Das neue Schlüsselwort = Standard in C ++ 11

Ich verstehe nicht, warum ich das jemals tun würde: struct S { int a; S(int aa) : a(aa) {} S() = default; }; Warum nicht einfach sagen: S() {} // instead of S() = default; Warum ein neues Keyword dazu bringen?

Ist es in C ++ immer noch eine schlechte Methode, einen Vektor von einer function zurückzugeben?

Kurze Version: Es ist üblich, große Objekte – wie Vektoren / Arrays – in vielen Programmiersprachen zurückzugeben. Ist dieser Stil jetzt in C ++ 0x akzeptabel, wenn die class einen Move-Konstruktor hat, oder halten es C ++ – Programmierer für merkwürdig / hässlich / abscheulich? Lange Version: In C ++ 0x gilt das immer noch […]

Was liefert “ und wo wird es dokumentiert?

Der neue C ++ 11-Standard erwähnt einen Header , vermutlich in Analogie zu . Nun wissen wir, dass C ++ 11 neue Zeichentypen und Literale bringt, die speziell für UTF16 und UTF32 entworfen wurden, aber ich glaube nicht, dass die Sprache tatsächlich functionen enthalten würde, um die (systemabhängige) Enge-Multibyte-Codierung in eine zu konvertieren die Unicode-Kodierungen. […]

Was ist die Wertkategorie der Operanden von C ++ Operatoren, wenn nicht angegeben?

PRÄMISSE: Der C ++ 11-Standard klassifiziert Ausdrücke in drei disjunkte Wertekategorien : lvalues , xvalues und prvalues (§ 3.10 / 1). Eine Erklärung, welche Wertkategorien hier zur Verfügung stehen, finden Sie hier . Ich habe Mühe herauszufinden, welche Anforderungen die verschiedenen Operatoren an die Wertkategorie ihrer Operanden stellen. In Absatz 3.10 / 1 heißt es: […]

Keine Übereinstimmung mit C ++ 11 Regex

Warum findet das keine Übereinstimmungen in g ++ (Debian 4.6.3-1) 4.6.3 oder clang Version 3.2 (trunk 159457) #include #include #include using namespace std; int main() { string line(“test”); regex pattern(“test”,regex_constants::grep); smatch result; bool ret(false); ret = regex_search(line,result,pattern); cout << boolalpha << ret << endl; cout << result.size() << endl; return 0 ; } Ausgabe false […]

Das Lesen von ifstream liest keine Leerzeichen

Ich implementiere einen benutzerdefinierten Lexer in C ++ und wenn ich versuche, Whitespace zu lesen, wird der Ifstream es nicht lesen. Ich lese Zeichen für Zeichen mit >> , und alle Leerzeichen sind weg. Gibt es irgendeinen Weg, den ifstream dazu zu bringen, alle Leerzeichen zu behalten und es mir vorzulesen? Ich weiß, dass beim […]

Kann die GotW # 101 “Lösung” tatsächlich etwas lösen?

Lesen Sie zuerst Herb’s Sutters GotW Beiträge über Pimpl in C ++ 11: GotW # 100: Kompilierungs-Firewalls (Schwierigkeitsgrad: 6/10) GotW # 101: Kompilierungs-Firewalls, Teil 2 (Schwierigkeitsgrad: 8/10) Ich habe Probleme, die in GotW # 101 vorgeschlagene Lösung zu verstehen. Soweit ich das verstehe, sind alle Probleme, die in GotW # 100 mühsam getriggers wurden, wieder […]

Wird constexpr mit Lambda-functionen / -Ausdrücken unterstützt?

struct Test { static const int value = []() -> int { return 0; } (); }; Mit gcc-4.6 bekomme ich etwas wie error: function needs to be constexpr . Ich habe mehrere Kombinationen von constexpr an verschiedenen Orten constexpr , aber kein Glück. Wird constexpr auch für Lambda-functionen unterstützt (unabhängig vom angegebenen return )? […]