Ich war überrascht, dass dies nicht in meinen Suchergebnissen angezeigt wurde. Ich dachte, jemand hätte dies zuvor gefragt, da die Verschiebungssemantik in C ++ 11 nützlich ist: Wann muss ich (oder ist es eine gute Idee für mich) eine Klasse in C ++ 11 unbeweglich machen? ( Andere Gründe als …
auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0 und neuerer Ausdruck "Sie verwenden clang ++!" und warnen Sie davor, dass die Aufnahme foo nicht verwendet wird. g ++ 4.9.0 und neuerer Ausdruck "Sie verwenden g ++!" und warnen, …
Im Zuweisungsoperator einer Klasse müssen Sie normalerweise überprüfen, ob das zugewiesene Objekt das aufrufende Objekt ist, damit Sie nichts vermasseln: Class& Class::operator=(const Class& rhs) { if (this != &rhs) { // do the assignment } return *this; } Benötigen Sie dasselbe für den Verschiebungszuweisungsoperator? Gibt es jemals eine Situation, in …
Ich habe immer gedacht, Zufallszahlen würden zwischen null und eins liegen, ohne1 , dh es handelt sich um Zahlen aus dem halboffenen Intervall [0,1]. Die Dokumentation auf cppreference.com von std::generate_canonicalbestätigt dies. Wenn ich jedoch das folgende Programm ausführe: #include <iostream> #include <limits> #include <random> int main() { std::mt19937 rng; std::seed_seq …
Wenn ich anzeige [=], dass alle lokalen Variablen nach Wert in einem Lambda erfasst werden sollen, werden dann alle lokalen Variablen in der Funktion kopiert oder nur alle lokalen Variablen , die vom Lambda verwendet werden ? Also zum Beispiel, wenn ich habe: vector<int> my_huge_vector(100000); int my_measly_int; some_function([=](int i){ return …
Ich bin kürzlich auf eine seltsame Deoptimierung gestoßen (oder habe eher eine Optimierungsmöglichkeit verpasst). Betrachten Sie diese Funktion zum effizienten Entpacken von Arrays aus 3-Bit-Ganzzahlen in 8-Bit-Ganzzahlen. In jeder Schleifeniteration werden 16 Zoll entpackt: void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t = *reinterpret_cast<uint64_t*>(source); target[0] …
Geschlossen . Diese Frage basiert auf Meinungen . Derzeit werden keine Antworten akzeptiert. Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage, damit sie durch Bearbeiten dieses Beitrags mit Fakten und Zitaten beantwortet werden kann . Geschlossen vor 2 Jahren . Verbessere diese Frage Erwägen: struct Person { int height; …
Ich habe an einem C ++ - Code gearbeitet, den ein Freund geschrieben hat, und erhalte den folgenden Fehler, den ich beim Kompilieren mit gcc4.6 noch nie gesehen habe: error: use of deleted function ‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would be ill-formed: uninitialized non-static const …
Ich habe verwendet, std::tieohne viel darüber nachzudenken. Es funktioniert, also habe ich das einfach akzeptiert: auto test() { int a, b; std::tie(a, b) = std::make_tuple(2, 3); // a is now 2, b is now 3 return a + b; // 5 } Aber wie funktioniert diese schwarze Magie ? Wie …
Ich hatte verstanden, dass Copy-on-Write kein praktikabler Weg ist, um eine Konformität std::stringin C ++ 11 zu implementieren , aber als es kürzlich in der Diskussion auftauchte, war ich nicht in der Lage, diese Aussage direkt zu unterstützen. Stimmt es, dass C ++ 11 keine COW-basierten Implementierungen von zulässt std::string? …
Es hängt lose mit dieser Frage zusammen: Sind std :: thread in C ++ 11 zusammengefasst? . Obwohl die Frage unterschiedlich ist, ist die Absicht dieselbe: Frage 1: Ist es immer noch sinnvoll, eigene Thread-Pools (oder Bibliotheken von Drittanbietern) zu verwenden, um eine teure Thread-Erstellung zu vermeiden? Die Schlussfolgerung in …
Ich verwende gcc 4.8.1 von http://hpc.sourceforge.net unter Mac OSX Mountain Lion. Ich versuche ein C ++ - Programm zu kompilieren, das die to_stringFunktion in verwendet <string>. Ich muss die Flagge -std=c++11jedes Mal benutzen : g++ -std=c++11 -o testcode1 code1.cpp Gibt es eine Möglichkeit, dieses Flag standardmäßig einzuschließen?
Könnten Sie ein Beispiel geben, wo static_assert(...) ('C ++ 11') das Problem elegant lösen würde? Ich bin mit der Laufzeit vertraut assert(...). Wann sollte ich es vorziehen, static_assert(...)regelmäßig zu sein assert(...)? Auch boostda BOOST_STATIC_ASSERTdrin heißt etwas , ist es dasselbe wie static_assert(...)?
Ich weiß, dass sie in C ++ 11 die Funktion hinzugefügt haben, um eine Variable als solche auf Null zu initialisieren double number = {}; // number = 0 int data{}; // data = 0 Gibt es eine ähnliche Möglichkeit, std::vectoreine feste Länge mit allen Nullen zu initialisieren ?
Es ist möglich, eine Funktion zu schreiben, die beim Kompilieren mit einem C-Compiler 0 und beim Kompilieren mit einem C ++ - Compiler 1 zurückgibt (die triviale Lösung mit #ifdef __cplusplusist nicht interessant). Beispielsweise: int isCPP() { return sizeof(char) == sizeof 'c'; } Natürlich funktioniert das oben Genannte nur, wenn …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.