Als «c++11» getaggte Fragen

Verwenden Sie dieses Tag für Code, der als C ++ 11 kompiliert werden muss (ohne die in C ++ 14 oder höher eingeführten Funktionen zu verwenden).

2
Warum ist std :: swap nicht vor C ++ 20 als constexpr markiert?
In C ++ 20 std::swapwird eine constexprFunktion. Ich weiß, dass die Standardbibliothek beim Markieren von Dingen wirklich hinter der Sprache zurückgeblieben ist constexpr, aber bis 2017 <algorithm>war sie ziemlich genau wie eine Reihe anderer Dinge. Noch std::swapnicht. Ich erinnere mich vage an einen seltsamen Sprachfehler, der diese Markierung verhindert, aber …

3
Sortieren eines Vektors in absteigender Reihenfolge innerhalb von zwei Bereichen
Angenommen, ich habe einen Vektor von ganzen Zahlen: std::vector<int> indices; for (int i=0; i<15; i++) indices.push_back(i); Dann sortiere ich es in absteigender Reihenfolge: sort(indices.begin(), indices.end(), [](int first, int second) -> bool{return indices[first] > indices[second];}) for (int i=0; i<15; i++) printf("%i\n", indices[i]); Dies ergibt Folgendes: 14 13 12 11 10 9 …

1
Kann ich std :: vector mit perfekter Weiterleitung der Elemente listeninitialisieren?
Ich bemerkte , dass aggregierte Liste initialisiert von std :: vector führt Initialisierung kopieren , wenn Bewegung mehr anwendbar ist. Gleichzeitig machen mehrere emplace_backs, was ich will. Ich konnte mir nur diese unvollständige Lösung für das Schreiben einer Vorlagenfunktion einfallen lassen init_emplace_vector. Es ist jedoch nur für nicht explizite Einzelwertkonstruktoren …

3
Warum ist die Dimension eines Arrays Teil seines Typs?
Beim Lesen des C ++ Primer-Buches stieß ich auf die folgende Aussage: "Die Anzahl der Elemente in einem Array ist Teil des Array-Typs." Also wollte ich das mit folgendem Code herausfinden: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; std::cout<<typeid(Array1).name()<<std::endl; //prints A4_c …
14 c++  arrays  c++11 

3
Führen Sie die Funktion innerhalb der Funktionsvorlage nur für die Typen aus, für die die Funktion definiert ist
Ich habe eine Funktionsvorlage, die viele verschiedene Typen als Eingabe verwendet. Von diesen Typen hat nur einer eine getInt()Funktion. Daher möchte ich, dass der Code die Funktion nur für diesen Typ ausführt. Bitte schlagen Sie eine Lösung vor. Vielen Dank #include <type_traits> #include <typeinfo> class X { public: int getInt(){ …

4
Ist die Erklärung der entspannten Reihenfolge in der Referenz falsch?
In der Dokumentation von std::memory_ordercppreference.com finden Sie ein Beispiel für eine entspannte Bestellung: Entspannte Bestellung Mit Tags versehene atomare Operationen memory_order_relaxedsind keine Synchronisationsoperationen. Sie legen keine Reihenfolge bei gleichzeitigen Speicherzugriffen fest. Sie garantieren nur die Konsistenz der Atomizität und der Änderungsreihenfolge. Zum Beispiel, wenn x und y anfänglich Null sind, …

1
Möglicher Compilerfehler in MSVC
Der folgende Code wird mit gcc und clang (und vielen anderen C ++ 11-Compilern) kompiliert. #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template <typename T> class data { public: data(datatype dt = to_datatype<T>::value) {} …
13 c++  c++11  visual-c++ 


2
Warum ist eine Aufzählungsvariable hier ein Wert?
Beispiel: typedef enum Color { RED, GREEN, BLUE } Color; void func(unsigned int& num) { num++; } int main() { Color clr = RED; func(clr); return 0; } Beim Kompilieren wird folgende Fehlermeldung angezeigt: <source>: In function 'int main()': <source>:16:9: error: cannot bind non-const lvalue reference of type 'unsigned int&' …


3
Wie finde ich heraus, welche Funktionen der Compiler generiert hat?
Ich kenne vom Compiler generierte Funktionen, die Dreierregel und die Fünferregel. In realen Szenarien ist es möglicherweise nicht trivial, genau herauszufinden, welche der vom Compiler generierten Funktionen (Konstruktoren, Zuweisungsoperatoren, Destruktoren) tatsächlich vom Compiler erstellt wurden. Gibt es eine Möglichkeit, die vom Compiler generierten Funktionen für eine bestimmte Klasse aufzulisten? Ich …
11 c++  c++11 

5
C ++ ternäre Zuordnung von Lambda
Irgendeine Idee, warum das folgende Snippet nicht kompiliert wird? Es beschwert sich mit einem Fehler "Fehler: Operanden zu ?: Haben verschiedene Typen" auto lambda1 = [&](T& arg) { ... }; auto lambda2 = [&](T& arg) { ... }; auto lambda = condition ? lambda1 : lambda2;


2
Der Aufruf von Lambda ist trotz expliziter Angabe des Rückgabetyps nicht eindeutig
Eine überladene Funktion sollte beide Funktoren aufnehmen, da der Lambda-Typ entscheidbar ist (umsetzbar auf einen std::function(bitte korrigieren Sie mich, wenn ich falsch liege). Die Frage ist: Warum gibt es unten einen Kompilierungsfehler, obwohl der Lambda-Typ explizit ist definiert? ( [&]() -> Type {}) Bitte beachten Sie, dass ich für meine …

2
Abzug der Argumenttypen für C ++ - Vorlagenvorlagen
Ich habe Code, der Übereinstimmungen eines Musters findet und ausdruckt, indem er über den Container mit Zeichenfolgen geht. Der Druck wird in der Funktion ausgeführt foo , die als Templat wird Der Code #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.