Suchergebnisse für Anfrage "language-lawyer"

6 die antwort

"Konstruieren" eines trivial kopierbaren Objekts mit memcpy

Ist dieser Code in C ++ korrekt? #include <cstdlib> #include <cstring> struct T // trivially copyable type { int x, y; }; int main() { void *buf = std::malloc( sizeof(T) ); if ( !buf ) return 0; T a{}; std::memcpy(buf, &a, sizeof a); T *b = ...

10 die antwort

Was prüft ein Compiler auf nicht umgesetzten Vorlagencode?

Zum Beispiel kompiliert das folgende Codestück mit gcc-4.9 und clang-602 class Base { public: static void foo() {} void badfoo(int i) {} }; template <typename T> class Derived : public Base { public: void bar() { Base::foo(); } void badbar() { ...

4 die antwort

Issue with std :: reference_wrapper

Das Problem ist mit dem folgenden Code klar: #include <functional> #include <iostream> #include <vector> int main() { //std::vector<int> a, b; int a = 0, b = 0; auto refa = std::ref(a); auto refb = std::ref(b); std::cout << (refa < refb) << ...

TOP-Veröffentlichungen

6 die antwort

Clang Bug? Namespace-Template-Klasse 'friend

Der folgende Code, der nicht unter clang kompiliert, sondern unter gcc und VS: template<typename T> class bar; namespace NS { template<typename T> class foo { foo() {} template<typename U> friend class bar; }; } template<typename R> class bar { ...

6 die antwort

Warum kann ich gets () in gcc -std = c11 verwenden?

Dasgets() -Funktion wurde aus der C-Sprache entfernt. Im Standard gibt es keine solche Funktion. Noch kompiliere ich den folgenden Code: #include <stdio.h> int main (void) { (void) gets (NULL); } using gcc -std=c11 -pedantic-errors -Wall ...

8 die antwort

Warum wählt die generische Java 8-Typinferenz diese Überladung aus?

Betrachten Sie das folgende Programm: public class GenericTypeInference { public static void main(String[] args) { print(new SillyGenericWrapper().get()); } private static void print(Object object) { System.out.println("Object"); } private ...

4 die antwort

Machen Klammern einen Unterschied bei der Bestimmung der Größe eines Arrays?

Das folgende Programm gibt dieselbe Nummer zweimal auf gcc 4.8.2 aus: #include <stdio.h> int main() { char a[13]; printf("sizeof a is %zu\n", sizeof a ); printf("sizeof(a) is %zu\n", sizeof(a)); }Gemäßdieser reddit ...

4 die antwort

Nicht statische Initialisierung von Datenelementen mit neuem Ausdruck

Betrachten Sie den folgenden Code: #include <map> template <typename T> struct X { std::map<int, T>* storage = new std::map<int, T>(); }; int main() { X<int> x; }Dies kompiliert aufclang ...

2 die antwort

Was ist die Definition von "Array" in C?

Der Standard definiertarray type akribisch, aber ich sehe keine Definition für array. Wir könnten "Objekt vom Array-Typ" sagen, aber das kann nicht richtig sein als untypisierte Objekte (z. B. durch @ zugewiesener Speicherplatzmalloc) wird ...

2 die antwort

Pack Erweiterung für Alias Template

Es scheint, dass ein Pack-Argument erweitert werden kannnu anstelle eines pack-Parameters einer Alias-Vorlage. Dies gilt nicht für eine Klasse oder eine Funktionsvorlage: template <class T, class... Args> struct x { using type = T; }; template ...