Articles of c ++ 11

Wird eine auf C ++ 11-Bereich basierende Schleife für jeden Zyklus ausgewertet?

for(auto& entity : memoryManager.getItems()) entity->update(mFrameTime); Wenn memoryManager 1000 Elemente enthält, wird memoryManager.getItems() 1000-mal oder nur zu Beginn der Schleife aufgerufen? Führt der Compiler eine Optimierung mit -O2 (oder -O3) durch? ( memoryManager.getItems() gibt ein std::vector& ) zurück

Fehler C2679: binär ‘<<': kein Operator gefunden, der einen rechten Operanden vom Typ 'std :: string' verwendet (oder es gibt keine akzeptable Konvertierung)

Hier ist mein Code, wie behebe ich diesen Fehler? #include “stdafx.h” #include using namespace std; int main() { string title = “THE WORLD OF PIRATES”; cout << title << endl; cout << " Welcome to the world of pirates"; cin.get(); return 0; } Der Fehler ist binary ‘<<' : no operator found which takes a […]

Ist ein verschobener Vektor immer leer?

Ich weiß, dass die Norm im Allgemeinen wenig Anforderungen an die Werte stellt, die verschoben wurden von: N3485 17.6.5.15 [lib.types.movefrom] / 1: Objekte von Typen, die in der C ++ – Standardbibliothek definiert sind, können von (12.8) verschoben werden. Verschiebeoperationen können explizit angegeben oder implizit generiert werden. Sofern nicht anders angegeben, müssen solche verschobenen Objekte […]

Spezifizieren Sie einen Typ für alle Argumente, die an variadic function oder variadic template function w / out über Array, vector, structs usw. übergeben werden?

Ich erstelle eine function (möglicherweise Member-function, nicht, dass es wichtig ist … vielleicht tut es?), Die eine unbekannte Anzahl von Argumenten akzeptieren muss, aber ich möchte, dass sie alle den gleichen Typ haben. Ich weiß, ich könnte ein Array oder einen Vektor übergeben, aber ich möchte die Liste der Argumente direkt ohne zusätzliche Struktur oder […]

Wie ändere ich den Modus vom C ++ 98-Modus in Dev-C ++ in einen Modus, der C ++ 0x unterstützt (Bereichsbasiert für)?

Ich lerne gerade, wie man bereichsbasierte for-Schleifen schreibt, aber das einzige Problem ist, dass mein Compiler, Orwell Dev-C ++, es anscheinend nicht in seinem Standardmodus unterstützt (was c ++ 98 ist). Wie kann ich diesen Modus zu einem anderen ändern, der diese function (und andere Features von C ++ 0x) unterstützt? Vielen Dank. Ebenfalls: Dies […]

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?