Ist der Wert des thisZeigers während der Lebensdauer eines bestimmten Objekts garantiert konstant? Ich kann mir keinen Fall vorstellen, in dem sich das ändern würde, aber ich weiß nicht, ob mir etwas
Ist der Wert des thisZeigers während der Lebensdauer eines bestimmten Objekts garantiert konstant? Ich kann mir keinen Fall vorstellen, in dem sich das ändern würde, aber ich weiß nicht, ob mir etwas
JLS : Der Operator mit der niedrigsten Priorität ist der Pfeil eines Lambda-Ausdrucks (->) , gefolgt von den Zuweisungsoperatoren. In welche Richtung verfolgt (Priorität erhöhen, Priorität verringern)? - "gefolgt" bedeutet, dass die Zuweisung eine höhere oder niedrigere Priorität hat (in Bezug...
Gegeben die folgende Klassenvorlage: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; Wir definieren Innerseparat für jede Spezialisierung von Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner...
C ++ verwendet den streamoffTyp, um einen Offset innerhalb eines (Datei-) Streams darzustellen, und ist in [stream.types] wie folgt definiert: using streamoff = implementation-defined ; Der Typ Streamoff ist ein Synonym für einen der vorzeichenbehafteten integralen Grundtypen mit...
Betrachten Sie diesen Code: void foo() { goto bar; int x = 0; bar: ; } GCC und Clang lehnen dies ab , da der Sprung zur bar:Umgehung der Variableninitialisierung erfolgt. MSVC beschwert sich überhaupt nicht (außer mitx After verwendet bar:wird, wird eine Warnung ). Wir können etwas Ähnliches...
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
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...
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...
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 ++ -...
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 hexit → Ziffer | A|...
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...
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 =...
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() { constexpr auto p...
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...
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...
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...
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...
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...
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 function 'void AllDer::foo()':...
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: struct...