Articles of c ++ 11

std :: to_string – mehr als die Instanz der überladenen function entspricht der Argumentliste

counter ist ein int void SentryManager::add(std::string name,std::shared_ptr){ name = name + std::to_string(counter); } Was wäre der beste Weg, um diesen Fehler zu stoppen? Als ich faul war, habe ich den Int long long (oder so) gemacht, aber ich bin mir sicher, dass es einen besseren Weg gibt, das zu lösen. Fehlermeldung: sentrymanager.cpp(8): error C2668: ‘std::to_string’ […]

Einen bewegten Container wiederverwenden?

Wie kann ein verschobener Container korrekt wiederverwendet werden? std::vector container; container.push_back(1); auto container2 = std::move(container); // ver1: Do nothing //container2.clear(); // ver2: “Reset” container = std::vector() // ver3: Reinitialize container.push_back(2); assert(container.size() == 1 && container.front() == 2); Von was ich im C ++ 0x Standardentwurf gelesen habe; ver3 scheint der richtige Weg zu sein, da […]

Warum führen Compiler keine redundanten std :: atomic writes zusammen?

Ich wundere mich, warum keine Compiler bereit sind, aufeinanderfolgende Schreibvorgänge mit demselben Wert auf eine einzelne atomare Variable zusammenzufassen, zB: #include std::atomic y(0); void f() { auto order = std::memory_order_relaxed; y.store(1, order); y.store(1, order); y.store(1, order); } Jeder Compiler, den ich ausprobiert habe, gibt den obigen Write dreimal aus. Welcher legitime, rennfreie Beobachter könnte einen […]

Wie kann man beim Aufruf eines functionsobjekts die Reihenfolge der Argumentauswertung garantieren?

Die Antworten auf die Frage, wie man bei Verwendung von std :: make_tuple eine undefinierte Ausführungsreihenfolge für die Konstruktoren vermeiden kann, führten zu einer Diskussion, in der ich erkannte , dass die Reihenfolge der Argumentauswertung für Konstruktoren garantiert werden kann: Verwenden einer braced-init-Liste die Reihenfolge ist garantiert von links nach rechts: T{ a, b, c […]

Was kann und darf ich nicht auf den Namespace std spezialisieren?

Benutzer dürfen dem std Namespace explizite Spezialisierungen hinzufügen. Es gibt jedoch einige Vorlagen, auf die ich mich ausdrücklich nicht spezialisieren darf. Welche Vorlagen kann und darf ich nicht spezialisieren?

Wie konvertiert man std :: chrono :: time_point in die DateTime-Zeichenkette mit Sekundenbruchteilen?

Wie konvertiert man std :: chrono :: time_point in die DateTime-Zeichenkette mit Sekundenbruchteilen? Zum Beispiel: “10-10-2012 12: 38: 40.123456”.

C ++: Kann ein Makro “abc” in “a”, “b”, “c” erweitern?

Ich habe eine variadic Vorlage geschrieben, die eine variable Anzahl von char Parametern akzeptiert, dh template struct Foo; Ich habe mich nur gefragt, ob es irgendwelche Makrotricks gibt, die mir erlauben würden, dies mit einer Syntax ähnlich der folgenden zu instanziieren: Foo oder Foo oder Foo etc. Im Grunde alles, was dich davon abhält, die […]

Wie erstelle ich Timer-Events mit C ++ 11?

Wie erstelle ich Timer-Events mit C ++ 11? Ich brauche etwas wie: “Ruf mich nach 1 Sekunde von jetzt an”. Gibt es eine Bibliothek?

Wie std :: unordered_map implementiert ist

c ++ unordered_map Kollisionsbehandlung, Größenanpassung und Neuanhebung Dies ist eine vorherige Frage, die von mir geöffnet wurde und ich habe gesehen, dass ich viel Verwirrung darüber habe, wie unordered_map implementiert wird. Ich bin mir sicher, dass viele andere Leute diese Verwirrung mit mir teilen. Basierend auf den Informationen, die ich kenne, ohne den Standard zu […]

Nun, wie funktioniert der benutzerdefinierte Deleter von std :: unique_ptr?

Laut N3290 akzeptiert std::unique_ptr ein Deleter-Argument in seinem Konstruktor. Allerdings kann ich nicht mit Visual C ++ 10.0 oder MinGW g ++ 4.4.1 in Windows noch mit g ++ 4.6.1 in Ubuntu arbeiten. Ich fürchte daher, dass mein Verständnis davon unvollständig oder falsch ist. Ich kann nicht den Sinn eines Deletar-Arguments sehen, das scheinbar ignoriert […]