Als «language-lawyer» getaggte Fragen

Bei Fragen zu den Feinheiten formaler oder maßgeblicher Spezifikationen von Programmiersprachen und -umgebungen.


1
Clang / GCC-Inkonsistenz in der Klassenspezialisierung
Ich kam dieses Problem auf bei dem Versuch , sich zu spezialisieren tuple_size/ tuple_elementeine benutzerdefinierte Klasse in C ++ 17 für strukturierte Bindung. Der folgende Code wird in GCC kompiliert, jedoch nicht in Clang (beide Trunk-Versionen, siehe Link unten). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = T; template<typename …


1
Kann ein Zeiger auf einen unvollständigen Typ unvollständig sein?
Kann int (*)[]ein unvollständiger Typ sein? C 2018 6.2.5 1 sagt: An verschiedenen Stellen innerhalb einer Übersetzungseinheit kann ein Objekttyp unvollständig (ohne ausreichende Informationen zur Bestimmung der Größe von Objekten dieses Typs) oder vollständig (mit ausreichenden Informationen) sein. Wenn also die Größe eines Typs bekannt ist, scheint der Typ vollständig …


1
Der Versuch, Vorlagen und Namenssuche zu verstehen
Ich versuche die folgenden Codefragmente zu verstehen Snippet # 1 template <typename T> struct A { static constexpr int VB = T::VD; }; struct B : A<B> { }; Weder gcc9 noch clang9 werfen hier einen Fehler. F. Warum wird dieser Code kompiliert? Instanziieren wir nicht, A<B>wenn wir von B …


2
Hat std :: deque zu Beginn tatsächlich eine konstante Zeiteinfügung?
Der Standard sagt: Eine Deque ist ein Sequenzcontainer, der Iteratoren mit wahlfreiem Zugriff unterstützt (27.2.7). Darüber hinaus werden Einfüge- und Löschvorgänge mit konstanter Zeit am Anfang oder am Ende unterstützt. Einfügen und Löschen in der Mitte dauert linear. In derselben Klausel heißt es jedoch auch: Alle Komplexitätsanforderungen in dieser Klausel …


1
Eliminierung der if / else-Verzweigung in C ++ zur Kompilierungszeit
Im folgenden Codebeispiel ifhängt die Anweisung vom boolVorlagenparameter ab, bei dem es sich um eine Konstante zur Kompilierungszeit handelt. Compiler behandeln diesen Code unterschiedlich: MSVC schlägt mit einem Verbindungsfehler fehl (was ich erwartet habe), da die Vorlagenfunktion in der elseVerzweigung nicht auf den trueWert der Vorlagenparameter spezialisiert ist (obwohl sie …

1
Wie man die vorgeschlagene Auflösung von # 1664 versteht
Nachdem ich mir die vorgeschlagene Auflösung von # 1664 ( vorgeschlagene Auflösung 1664 ) angesehen habe, bin ich verwirrt über die Regeln eines Standardarguments einer Funktionsvorlage. Zitieren Sie den Inhalt hier: Gemäß 8.1.5 [expr.prim.lambda] Absatz 3 Der Schließungstyp wird im kleinsten Blockbereich, Klassenbereich oder Namespace-Bereich deklariert, der den entsprechenden Lambda-Ausdruck …




1
Ist die Verwendung von reinterpret_cast auf einem memcpy-Puffer UB?
Angesichts des Codes struct A {}; auto obj = new A; std::vector<unsigned char> buffer; buffer.resize(sizeof(obj)); std::memcpy(buffer.data(), &obj, sizeof(obj)); // this copies the pointer, not the object! // ... auto ptr = *reinterpret_cast<A**>(buffer.data()); // is this UB? delete ptr; ist die Verwendung von reinterpret_castin diesem Fall UB? Ich würde ja sagen, …

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.