Articles of c ++ 11

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 […]

Warum gibt es kein std :: is_struct-Typenmerkmal?

Ich habe das gesehen, um zu überprüfen, ob ein Typ T eine class ist, die ich benutzen kann: bool isClass = std::is_class::value; Es gibt true für classn und Strukturen zurück. Ich weiß, dass sie in C ++ fast dasselbe sind, aber ich würde gerne wissen, warum es keinen Unterschied zwischen ihnen im Typmerkmal gibt. Ist […]

Gibt es in C ++ 11 eine Range-class zur Verwendung mit bereichsbasierten for-Schleifen?

Ich habe das vor kurzem geschrieben: template class range_class { public: class iterator { friend class range_class; public: long int operator *() const { return i_; } const iterator &operator ++() { ++i_; return *this; } iterator operator ++(int) { iterator copy(*this); ++i_; return copy; } bool operator ==(const iterator &other) const { return i_ […]