Angenommen, ich habe einen Typ und möchte seinen Standardkonstruktor privat machen. Ich schreibe folgendes: class C { C() = default; }; int main() { C c; // error: C::C() is private within this context (g++) // error: calling a private constructor of class 'C' (clang++) // error C2248: 'C::C' cannot …
Ich frage mich, ob es möglich ist, eine Funktion zu schreiben, die eine Lambda-Funktion in C ++ 11 zurückgibt. Ein Problem ist natürlich, wie eine solche Funktion deklariert wird. Jedes Lambda hat einen Typ, aber dieser Typ ist in C ++ nicht ausdrückbar. Ich denke nicht, dass das funktionieren würde: …
Geschlossen . Diese Frage basiert auf Meinungen . Derzeit werden keine Antworten akzeptiert. Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage, damit sie mit Fakten und Zitaten beantwortet werden kann, indem Sie diesen Beitrag bearbeiten . Geschlossen vor 3 Jahren . Verbessere diese Frage C ++ 11 unterstützt eine …
Ich erhalte einen C ++ - Fehler beim Threading: terminate called without an active exception Aborted Hier ist der Code: #include <queue> #include <thread> #include <mutex> #include <condition_variable> template<typename TYPE> class blocking_stream { public: blocking_stream(size_t max_buffer_size_) : max_buffer_size(max_buffer_size_) { } //PUSH data into the buffer blocking_stream &operator<<(TYPE &other) { std::unique_lock<std::mutex> …
In C ++ ist es möglich, das staticSchlüsselwort innerhalb einer Übersetzungseinheit zu verwenden, um die Sichtbarkeit eines Symbols (entweder Variablen- oder Funktionsdeklaration) zu beeinflussen. In n3092 war dies veraltet: Anhang D.2 [depl.static] Die Verwendung des statischen Schlüsselworts ist veraltet, wenn Objekte im Namespace-Bereich deklariert werden (siehe 3.3.6). In n3225 wurde …
Hallo, ich versuche std::threadmit G ++ zu verwenden. Hier ist mein Testcode #include <thread> #include <iostream> int main(int, char **){ std::thread tt([](){ std::cout<<"Thread!"<<std::endl; }); tt.join(); } Es wird kompiliert, aber wenn ich versuche, es auszuführen, ist das Ergebnis: terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted …
Ich habe versucht, einen Lambda-Vektor zu erstellen, bin aber gescheitert: auto ignore = [&]() { return 10; }; //1 std::vector<decltype(ignore)> v; //2 v.push_back([&]() { return 100; }); //3 Bis zu Zeile 2 wird es gut kompiliert . Die Zeile 3 gibt jedoch einen Kompilierungsfehler aus : Fehler: Keine Übereinstimmungsfunktion für …
Die Beschreibung von std::is_voidbesagt, dass: Gibt den Wert der Elementkonstante an, der gleich true ist, wenn T vom Typ void, const void, volatile void oder const volatile void ist. Was könnte dann sein const voidoder ein volatile void? Diese Antwort besagt, dass der const voidRückgabetyp ungültig wäre (kompiliert jedoch unter …
Warum lässt C ++ 11 " deleted" -Funktionen an der Überlastungsauflösung teilnehmen ? Warum ist das nützlich? Oder mit anderen Worten, warum werden sie versteckt, anstatt vollständig gelöscht zu werden?
Ist es möglich, ein Parameterpaket für eine spätere Verwendung zu speichern? template <typename... T> class Action { private: std::function<void(T...)> f; T... args; // <--- something like this public: Action(std::function<void(T...)> f, T... args) : f(f), args(args) {} void act(){ f(args); // <--- such that this will be possible } } Dann …
Ich bin sehr verwirrt über Wert- & Standard- & Null-Initialisierung. und vor allem, wenn sie sich für die verschiedenen Standards C ++ 03 und C ++ 11 (und C ++ 14 ) einsetzen. Ich zitiere und versuche, eine wirklich gute Antwort Value- / Default- / Zero-Init C ++ 98 und …
Dies ist eine zweiteilige Frage, die sich mit der Atomizität von std::shared_ptr: 1. Soweit ich das beurteilen kann, std::shared_ptrist dies der einzige intelligente Zeiger <memory>, der atomar ist. Ich frage mich, ob es eine nicht-atomare Version von std::shared_ptrgibt (ich kann nichts darin sehen <memory>, daher bin ich auch offen für …
Ich verstehe die richtige Art zu erfassen this (Ändern von Objekteigenschaften) in einem Lambda wie folgt: auto f = [this] () { /* ... */ }; Aber ich bin neugierig auf die folgende Besonderheit, die ich gesehen habe: class C { public: void foo() { // auto f = [] …
Wenn ich ein Objekt deklariere, das in einen gemeinsamen Zeiger eingeschlossen ist: std::shared_ptr<myClass> myClassObject(new myClass()); dann wollte ich es als Argument an eine Methode übergeben: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr<myClass> arg1) { arg1->someField = 4; } Erhöht das oben Gesagte einfach die Referenzanzahl von shared_pt und alles ist cool? …
Betrachten Sie das folgende Programm: #include <string> #include <vector> using namespace std; struct T { int a; double b; string c; }; vector<T> V; int main() { V.emplace_back(42, 3.14, "foo"); } Es funktioniert nicht: $ g++ -std=gnu++11 ./test.cpp In file included from /usr/include/c++/4.7/x86_64-linux-gnu/bits/c++allocator.h:34:0, from /usr/include/c++/4.7/bits/allocator.h:48, from /usr/include/c++/4.7/string:43, from ./test.cpp:1: /usr/include/c++/4.7/ext/new_allocator.h: …
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.