Kürzlich kam in einer Codeüberprüfung, die im folgenden Beispiel: enum class A : uint8_t { VAL1, VAL2 }; ... std::vector<A> vOfA; // Assume this is sized and full of some stuff. std::memcpy(wire_buffer, vOfA.data(), vOfA.size() * sizeof(A)); Wir sollten sizeof(std::underlying_type<A>::type)anstelle von verwenden sizeof(A). Ist es möglich, dass sich diese jemals unterscheiden …
Als Übung schreibe ich einen Parser für Haskell von Grund auf neu. Bei der Erstellung des Lexers habe ich die folgenden Regeln im Haskell 2010-Bericht beachtet : Ziffer → ascDigit | uniDigit ascDigit → 0| 1| … | 9 uniDigit → beliebiges Unicode-Dezimalstellen- Oktit → 0| 1| … | 7 …
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 …
std::basic_ioshat einen öffentlichen Konstruktor : explicit basic_ios (std::basic_streambuf<CharT,Traits>* sb); IMO, der einzige Grund für eine Klasse, einen öffentlichen Konstruktor zu haben, ist die Verwendung einer eigenständigen Instanz dieser Klasse in einem Programm. Wenn eine Klasse nur existiert, um andere Klassen davon abzuleiten (wie es der Fall zu sein scheint basic_ios), …
Muss ein Programm beendet werden? Mit anderen Worten, ist ein Programm, das für immer technisch undefiniertes Verhalten läuft? Beachten Sie, dass es hier nicht um leere Schleifen geht. Apropos Programme, die für immer "Zeug" (dh beobachtbares Verhalten) tun. ZB so etwas: int main() { while (true) { try { get_input(); …
Die Optimierung der leeren Basis ist großartig. Es gibt jedoch die folgende Einschränkung: Eine leere Basisoptimierung ist verboten, wenn eine der leeren Basisklassen auch der Typ oder die Basis des Typs des ersten nicht statischen Datenelements ist, da die beiden Basisunterobjekte desselben Typs unterschiedliche Adressen innerhalb der Objektdarstellung haben müssen …
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 Schwierigkeiten, den folgenden Absatz zu verstehen, der aus der Referenz über den trivialen Standardkonstruktor zitiert wird . Ich habe nach Stackoverflow gesucht, aber immer noch keine klare Antwort erhalten. Also bitte helfen. Ein trivialer Standardkonstruktor ist ein Konstruktor, der keine Aktion ausführt. Alle mit der C-Sprache kompatiblen Datentypen …
Ich möchte tragbaren Code (Intel, ARM, PowerPC ...) schreiben, der eine Variante eines klassischen Problems löst: Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } in dem das Ziel ist, eine Situation zu vermeiden, in der beide Threads arbeitensomething . (Es ist in …
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, …
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 …
MSVC, Clang und GCC sind sich in diesem Code nicht einig: struct Base { int x; }; struct Der1 : public Base {}; struct Der2 : public Base {}; struct AllDer : public Der1, public Der2 { void foo() { Der1::Base::x = 5; } }; Godbolt GCC: <source>: In member …
Betrachten Sie die folgenden drei structs: class blub { int i; char c; blub(const blub&) {} }; class blob { char s; blob(const blob&) {} }; struct bla { blub b0; blob b1; }; Auf typischen Plattformen mit int4 Bytes sind die Größen, Ausrichtungen und die Gesamtauffüllung 1 wie folgt: …
Wie der Titel schon sagt: Welche Garantien gibt es für die Bewertung einer Haskell-Funktionsrückgabeeinheit? Man könnte meinen, dass in einem solchen Fall keine Auswertung erforderlich ist. Der Compiler könnte alle derartigen Aufrufe durch einen unmittelbaren ()Wert ersetzen, es sei denn, es liegen explizite Anforderungen an die Strenge vor. In diesem …
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.