C ++ 17 ist der Name des 2017 genehmigten C ++ - Standards. Er baut auf dem vorherigen C ++ 14-Standard auf, verbessert die Kernsprache und die Standardbibliothek und fügt einige neue Sprachfunktionen hinzu.
Gibt es Fallstricke für bestimmte Betriebssysteme, die ich kennen sollte? Es gibt viele Duplikate ( 1 , 2 , 3 , 4 , 5 ) dieser Frage, die jedoch vor Jahrzehnten beantwortet wurden. Die sehr hoch bewerteten Antworten in vielen dieser Fragen sind heute falsch. Methoden von anderen (alten QS) …
Soweit ich weiß, wurde C ++ 14 eingeführt std::make_unique, da dies aufgrund der nicht angegebenen Reihenfolge der Parameterauswertung unsicher war: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Erläuterung: Wenn die Auswertung zuerst den Speicher für den Rohzeiger zuweist, dann aufruft g()und vor der std::unique_ptrKonstruktion eine Ausnahme ausgelöst wird , geht der …
Ich versuche, die neuen c ++ 1z-Funktionen tatsächlich auf dem Kopf der Entwicklung in gcc 6.0 zu verwenden. Wenn ich dieses kleine Beispiel versuche: #include <iostream> #include <experimental/filesystem> namespace fs = std::experimental::filesystem; int main() { fs::path p1 = "/home/pete/checkit"; std::cout << "p1 = " << p1 << std::endl; } Ich …
Ich habe gerade gesehen, wie Stephan T. Lavavej CppCon 2018über "Class Template Argument Deduction" sprach , wo er irgendwann übrigens sagt: In C ++ fließen Informationen fast nie rückwärts ... Ich musste "fast" sagen, weil es ein oder zwei Fälle gibt, möglicherweise mehr, aber nur sehr wenige . Obwohl ich …
Welche Auswirkungen haben die in C ++ 17 abgestimmten Garantien für die Evaluierungsreihenfolge (P0145) auf typischen C ++ - Code? Was ändert sich an Dingen wie den folgenden? i = 1; f(i++, i) und std::cout << f() << f() << f(); oder f(g(), h(), j());
Auf dem Oulu ISO C ++ Standards Meeting 2016 wurde vom Normungsausschuss ein Vorschlag mit dem Titel Garantierte Kopierentfernung durch vereinfachte Wertekategorien in C ++ 17 abgestimmt. Wie genau funktioniert die garantierte Kopierentscheidung? Deckt es einige Fälle ab, in denen die Kopierelision bereits zulässig war, oder sind Codeänderungen erforderlich, um …
Der C ++ 17-Standard führt "Anleitungen zum Abziehen von Vorlagen" ein. Ich habe festgestellt, dass sie etwas mit dem Abzug neuer Vorlagenargumente für Konstruktoren zu tun haben, die in dieser Version des Standards eingeführt wurden, aber ich habe noch keine einfache Erklärung im FAQ-Stil gesehen, was sie sind und wofür …
Ich habe ein Projekt, das derzeit C ++ 11/14 verwendet, aber es erfordert so etwas wie std::filesystem, das nur in C ++ 17 verfügbar ist, und daher habe ich keine Chance, es derzeit zu verwenden. Ich sehe jedoch, dass es in meinem aktuellen Compiler als verfügbar ist std::experimental::filesystem. Ist es …
Im folgenden Code verwende ich das Standardattribut [[fallthrough]]von C ++ 1z, um zu dokumentieren, dass ein Fallthrough gewünscht wird: #include <iostream> int main() { switch (0) { case 0: std::cout << "a\n"; [[fallthrough]] case 1: std::cout << "b\n"; break; } } Mit GCC 7.1 wird der Code fehlerfrei kompiliert. Der …
(In Bezug auf diese Frage und Antwort .) Vor dem C ++ 17-Standard war der folgende Satz in [basic.compound] / 3 enthalten : Befindet sich ein Objekt vom Typ T an einer Adresse A, so soll ein Zeiger vom Typ cv T *, dessen Wert die Adresse A ist, auf …
Auftakt: std::tuple<int, int, int> f(); std::tuple<int, int, float, int> g(); C ++ 1z führt eine Syntax für strukturierte Bindungen ein, die das Schreiben anstelle von ermöglicht int a, b, c; std::tie(a, b, c) = f(); etwas wie auto [a, b, c] = f(); Es std::tiedarf jedoch auch angegeben werden std::ignore, …
Ich habe gelesen, dass wir in C ++ 17 Variablen in solchen ifAnweisungen initialisieren können if (int length = 2; length == 2) //execute something Anstatt int length = 2; if (length == 2) //do something Obwohl es kürzer ist, beeinträchtigt es die Lesbarkeit des Codes (insbesondere für Leute, die …
Darf der Compiler dies optimieren (gemäß C ++ 17-Standard): int fn() { volatile int x = 0; return x; } dazu? int fn() { return 0; } Wenn ja, warum? Wenn nicht, warum nicht? Hier einige Überlegungen zu diesem Thema: Aktuelle Compiler werden fn()als lokale Variable kompiliert , die auf …
C ++ 17 hinzugefügt std::hardware_destructive_interference_sizeundstd::hardware_constructive_interference_size . Zuerst dachte ich, es sei nur eine tragbare Möglichkeit, die Größe einer L1-Cache-Zeile zu ermitteln, aber das ist eine übermäßige Vereinfachung. Fragen: Wie hängen diese Konstanten mit der L1-Cache-Zeilengröße zusammen? Gibt es ein gutes Beispiel, das ihre Anwendungsfälle demonstriert? Beide sind definiert static constexpr. …
Wenn ich http://en.cppreference.com/w/cpp/string/basic_string_view als Referenz verwende, sehe ich keine Möglichkeit, dies eleganter zu tun: std::string s = "hello world!"; std::string_view v = s; v = v.substr(6, 5); // "world" Schlimmer noch, der naive Ansatz ist eine Falle und hinterlässt veinen baumelnden Hinweis auf eine vorübergehende: std::string s = "hello world!"; …
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.