Suchergebnisse für Anfrage "language-lawyer"

18 die antwort

Wird ein Nullzeiger inkrementiert, der genau definiert ist?

Beispiele für undefiniertes / nicht angegebenes Verhalten bei Zeigerarithmetik gibt es viele - Zeiger müssen innerhalb desselben Arrays (oder eines nach dem Ende) oder innerhalb desselben Objekts zeigen oben usw. Ist die folgende Operation gut ...

2 die antwort

Ist std :: abs (0u) schlecht geformt?

Gab das folgende Programm: #include <cmath> int main() { std::abs(0u) ; }gcc undclang nicht einig, ob dies schlecht geformt ist. @ Verwendgcc mitlibstdc++ Der Code wird ohne Fehler oder Warnung erstellt sehe es ...

12 die antwort

Vermeidet dies UB

Diese Frage ist eher eine akademische, da es keinen gültigen Grund gibt, eine eigene @ zu schreibeoffsetof Makro mehr. Trotzdem habe ich hier und da dieses hausgemachte Implementierungs-Popup gesehen: #define offsetof(s, m) ((size_t) &(((s ...

TOP-Veröffentlichungen

18 die antwort

Warum wäre das Verhalten von std :: memcpy für Objekte, die nicht TriviallyCopyable sind, undefiniert?

Vonhttp: //en.cppreference.com/w/cpp/string/byte/memcp [http://en.cppreference.com/w/cpp/string/byte/memcpy]: Wenn die Objekte nicht @ si TriviallyCopyable [http://en.cppreference.com/w/cpp/concept/TriviallyCopyable] (z. B. Skalare, Arrays, ...

2 die antwort

Ist eine Klasse mit gelöschtem Kopierkonstruktor trivial kopierbar?

Ist diese Klasse: class A { public: A() = default; A(const A&) = delete; };trivial kopierbar? (Zumindest scheint clang so zu denken Lebe [http://coliru.stacked-crooked.com/a/3bf899de8625279d])) Insbesondere würde A a,b; std::memcpy(&a, &b, ...

2 die antwort

Kann undefiniertes Verhalten, das einem Verhalten von getc () folgen würde, ändern, wenn getc () über SIGINT @ beendet wir

Unter modernen Interpretationen von "Undefined Behaviour" kann ein Compiler davon ausgehen, dass keine Kette von Ereignissen auftritt, die dazu führen würde, dass undefiniertes Verhalten "unvermeidlich" wird, und Code eliminieren, der nur in ...

2 die antwort

Ambiguous Name Lookup mit using-Direktive

Es ist nicht zulässig, einen Namespace und eine Klasse mit demselben Namen in einen deklarativen Bereich zu setzen, d. H. namespace A {} class A{};ist schlecht geformt [http://coliru.stacked-crooked.com/a/5b837907b4d0609c] (siehe §3.3.1 / 4). ...

2 die antwort

Kann die Deklaration # 3 im Beispiel von [basic.link] / 6 C ++ 14 nicht verstehen

[basic.link] / 6 Der Name einer im Blockbereich deklarierten Funktion und der Name einer von einem Blockbereich deklarierten Variablenextern Deklaration haben Verknüpfung. Wenn da ein ... istsichtba -Deklaration einer Entität mit einer ...

2 die antwort

C ++ 14 Warnung: zu viele Template-Header für Variable (sollte 0 sein)

Während ich mit dem aktuellen G ++ - 5-Compiler experimentierte, schrieb ich die folgende Anweisung in eine Datei: template<T> T a; template<> int a = 1;Was in ... endet Warnung: zu viele Vorlagenüberschriften füra (sollte 0 sein) Auch ...

4 die antwort

static_assert abhängig von nicht typisierten Template-Parametern (unterschiedliches Verhalten bei gcc und clang)

template <int answer> struct Hitchhiker { static_assert(sizeof(answer) != sizeof(answer), "Invalid answer"); }; template <> struct Hitchhiker<42> {}; Während versucht wird, die allgemeine Vorlageninstanziierung mit @ zu deaktivierstatic_assert ...