Articles of c ++ 11

Ist is_constexpr in C ++ 11 möglich?

Ist es möglich, einen booleschen Kompilierungszeitwert zu erzeugen, der darauf basiert, ob ein C ++ 11-Ausdruck ein konstanter Ausdruck (dh constexpr ) in C ++ 11 ist oder nicht? Ein paar Fragen zu SO beziehen sich darauf, aber ich sehe nirgendwo eine klare Antwort.

Initialisieren eines Elementarrays im Konstruktorinitialisierer

class C { public: C() : arr({1,2,3}) //doesn’t compile {} /* C() : arr{1,2,3} //doesn’t compile either {} */ private: int arr[3]; }; Ich glaube der Grund ist, dass Arrays nur mit = Syntax initialisiert werden können, nämlich: int arr[3] = {1,3,4}; Fragen Wie kann ich tun, was ich tun möchte (das heißt, ein Array […]

Kann ich C ++ 11 mit Xcode verwenden?

Ich denke über die Verwendung einiger C ++ 11 Features (wie zB auto ) in einigen plattformübergreifenden Projekten (Windows + Mac) nach. Unter Windows unterstützt Visual Studio Teile des kommenden C ++ 11-Standards, mit denen ich Teile der Codebasis vereinfachen kann, so dass ich natürlich daran interessiert wäre, diese functionen zu verwenden. Aber soweit ich […]

Wie ruft man eine function für alle variadischen Vorlagenargumente auf?

ich möchte zu tun template void print(ArgTypes… Args) { print(Args)…; } Und muss es dieser ziemlich sperrigen rekursiven Kette entsprechen: template void print(const T& t, ArgTypes… Args) { print(t); print(Args…); } gefolgt von expliziten Ein-Parameter-Spezialisierungen für jeden Typ, den ich drucken möchte. Das “Problem” bei der rekursiven Implementierung besteht darin, dass viel redundanter Code erzeugt […]

Wie kann ich C ++ 11 in Qt Creator aktivieren?

Der Titel ist ziemlich selbstbeschreibend. Ich habe Qt Creator 2.7.0 heruntergeladen, und ich versuche, einige grundlegende C ++ 11 Code zu kompilieren: int my_array[5] = {1, 2, 3, 4, 5}; for(int &x : my_array) { x *= 2; } Ich erhalte den folgenden Fehler: range based for loops are not allowed in c++ 98 mode […]

Wie überprüft man, ob ein std :: -Thread noch läuft?

Wie kann ich überprüfen, ob ein std::thread (plattformunabhängig) noch läuft? Es fehlt eine timed_join() Methode und joinable() ist dafür nicht gedacht. Ich dachte daran, einen Mutex mit einem std::lock_guard in den Thread zu std::lock_guard und mithilfe der try_lock() -Methode des Mutex festzustellen, ob er noch gesperrt ist (der Thread läuft), aber es erscheint mir unnötig […]

Warum hat C ++ keinen Garbage Collector?

Ich stelle diese Frage nicht wegen der Vorteile der Garbage-Collection vor allem. Mein Hauptgrund dafür ist, dass ich weiß, dass Bjarne Stroustrup gesagt hat, dass C ++ irgendwann einen Müllsammler haben wird. Mit dem gesagt, warum wurde es nicht hinzugefügt? Es gibt bereits einige Garbage Collectors für C ++. Ist das nur eines von diesen […]

Unterschied zwischen spitzen Klammern und doppelten Anführungszeichen “”, wenn Headerdateien in C ++ eingeschlossen sind?

Mögliche Duplikate: Was ist der Unterschied zwischen #include und #include “filename”? Was ist der Unterschied zwischen der spitzen Klammer und doppelten Anführungszeichen ” ” wenn Header-Dateien in C ++ eingeschlossen sind? Ich meine, welche Dateien sollen mit einbezogen werden zB: #include und welche Dateien sollen mit einbezogen werden zB: #include “MyFile.h” ???

Wie verwende ich die range-basierte for () Schleife mit std :: map?

Das gängige Beispiel für C ++ 11-basierte for () -Schleifen ist immer etwas Einfaches: std::vector numbers = { 1, 2, 3, 4, 5, 6, 7 }; for ( auto xyz : numbers ) { std::cout << xyz << std::endl; } In diesem Fall ist xyz ein int . Aber was passiert, wenn wir so etwas […]

C ++ 11 Reverse-Range-basierte For-Schleife

Gibt es einen Container-Adapter, der die Richtung der Iteratoren umkehren würde, so dass ich mit einer bereichsbasierten For-Schleife rückwärts über einen Container iterieren kann? Mit expliziten Iteratoren würde ich das konvertieren: for (auto i = c.begin(); i != c.end(); ++i) { … das mögen: for (auto i = c.rbegin(); i != c.rend(); ++i) { … […]