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 eine Möglichkeit, in C ++ 11 zu überprüfen, ob eine Aufzählung fortlaufend ist ? Es ist voll gültig, eine Aufzählung anzugeben, die nicht sind. Gibt es möglicherweise eine Funktion wie ein Typmerkmal in C ++ 14, C ++ 17 oder C ++ 20, um zu überprüfen, ob die …
Unser Team arbeitet mit einer über 10 Jahre alten C ++ - Codebasis und hat kürzlich auf einen C ++ 17-Compiler umgestellt. Deshalb suchen wir nach Möglichkeiten, unseren Code zu modernisieren. In einem Konferenzgespräch auf YouTube hörte ich den Vorschlag, const char*globale Zeichenfolgen durch zu ersetzen constexpr string_view. Da wir …
Ich habe mit autoin herumgespielt std::pair. Im folgenden Code soll die Funktion feinen std::pairTyp zurückgeben, der von einem Vorlagenparameter abhängt. Ein Arbeitsbeispiel: BEISPIEL 1 template <unsigned S> auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return std::pair{1.0, …
Ich kompiliere dieses Programm mit g ++ und clang ++. Es gibt einen Unterschied: g ++ druckt 1, aber clang ++ druckt 2. Es scheint, dass g ++: die externe Variable im kürzesten Bereich definiert ist. clang ++: Die externe Variable wird im kürzesten globalen Bereich definiert. Hat die C …
Ist das gültiges C ++? int main() { constexpr auto sz = __func__ - __func__; return sz; } GCC und MSVC denken, dass es in Ordnung ist, Clang denkt, dass es nicht: Compiler Explorer . Alle Compiler sind sich einig, dass dies in Ordnung ist: Compiler Explorer . int main() …
Ich bin auf dieses Verhalten gestoßen std::gcd, das ich unerwartet fand: #include <iostream> #include <numeric> int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type<decltype(a), decltype(b)>::type; C ca = std::abs(a); C cb = b; std::cout << …
Ich habe kürzlich eine Reddit-Diskussion verfolgt, die zu einem schönen Vergleich der std::visitOptimierung zwischen Compilern führte. Mir ist Folgendes aufgefallen: https://godbolt.org/z/D2Q5ED Sowohl GCC9 als auch Clang9 (ich denke, sie haben dieselbe stdlib) generieren keinen Code zum Überprüfen und Auslösen einer wertlosen Ausnahme, wenn alle Typen bestimmte Bedingungen erfüllen. Dies führt …
Ich habe folgenden Code: #include <vector> #include <utility> int main() { std::vector<bool> vb{true, false}; std::swap(vb[0], vb[1]); } Argumente über die Vernunft vector<bool>beiseite, das funktionierte gut bei: Clang für Mac Visual Studio für Windows GCC für Linux Dann habe ich versucht, es mit Clang unter Windows zu erstellen und habe den …
Ist das folgende Programm gut formuliert? #include <vector> struct A { explicit A(int) {} }; int main() { std::vector<int> vi = {1, 2, 3, 4, 5}; std::vector<A> va(vi.begin(), vi.end()); } Gemäß C ++ 17 [sequence.reqmts] ist die Anforderung für X u(i, j); Wo Xist ein Sequenzcontainer, ist: Tsoll EmplaceConstructiblein Xvon …
Ich bin gespannt, wie nullptrdas geht. Die Standards N4659 und N4849 sagen: es muss Typ haben std::nullptr_t; Sie können seine Adresse nicht nehmen; Es kann direkt in einen Zeiger und einen Zeiger auf ein Mitglied konvertiert werden. sizeof(std::nullptr_t) == sizeof(void*);; seine Umwandlung in boolist false; sein Wert kann identisch (void*)0, …
Wenn wir a static_assertin a verwenden möchten, if constexprmüssen wir die Bedingung von einem Vorlagenparameter abhängig machen. Interessanterweise stimmen gcc und clang nicht überein, wenn der Code in ein Lambda eingewickelt ist. Der folgende Code wird mit gcc kompiliert, aber clang löst die Bestätigung aus, auch wenn das if constexprnicht …
Ich versuche, Ausdruckstypen von C ++ zu verstehen, und je mehr ich lese, desto verwirrter war ich, da ich den C ++ - Entwurf sehr schwer zu verdauen finde und daher andere Ressourcen bevorzuge, aber sie widersprechen sich entweder oder berücksichtigen nicht, dass die Wortlaut und Definition zwischen C ++ …
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.