Der folgende Code lässt sich gut mit Clang-Trunk im C ++ 17-Modus kompilieren, bricht jedoch im C ++ 2a-Modus (bevorstehendes C ++ 20) ab: // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} }; …
Dieses Dokument in Abschnitt 2.6 Computed Includes enthält den folgenden Absatz: Wenn die Zeile zu einem Token-Stream erweitert wird, der mit einem <Token beginnt und ein> Token enthält, werden die Token zwischen dem <und dem ersten> kombiniert, um den einzuschließenden Dateinamen zu bilden. Jedes Leerzeichen zwischen Token wird auf ein …
Betrachten Sie die folgenden zwei Klassen und Schnittstellen: public class Class1 {} public class Class2 {} public interface Interface1 {} Warum ruft der zweite Aufruf mandatorydie überladene Methode auf Class2, wenn getInterface1und Interface1hat keine Beziehung zu Class2? public class Test { public static void main(String[] args) { Class1 class1 = …
Betrachten Sie dieses Beispiel (von hier ): #include <type_traits> #include <iostream> template <typename U> struct A { }; struct B { template <typename F = int> A<F> f() { return A<F>{}; } using default_return_type = decltype(std::declval<B>().f()); }; int main() { B::default_return_type x{}; std::cout << std::is_same< B::default_return_type, A<int>>::value; } Es wird …
Ich habe Code, der Übereinstimmungen eines Musters findet und ausdruckt, indem er über den Container mit Zeichenfolgen geht. Der Druck wird in der Funktion ausgeführt foo , die als Templat wird Der Code #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> …
Mein Code: #include <stdio.h> #include <limits.h> int main() { char c = CHAR_MAX; c += 1; printf("CHAR_MIN=%d CHAR_MAX=%d c=%d (%c)\n", CHAR_MIN, CHAR_MAX, c, c); } Ausgabe: CHAR_MIN=-128 CHAR_MAX=127 c=-128 () Wir sehen, dass, wenn wir eine charVariable inkrementieren CHAR_MAX, diese umbrochen wird CHAR_MIN. Ist dieses Verhalten garantiert? Oder handelt es …
Bearbeiten 2 : Ich habe einen seltsamen Testfehler behoben, als eine Funktion, die sich zuvor in einer C ++ - Quelldatei befand, aber wörtlich in eine C-Datei verschoben wurde, falsche Ergebnisse zurückgab. Die folgende MVE ermöglicht es, das Problem mit GCC zu reproduzieren. Als ich jedoch aus einer Laune heraus …
Im folgenden Beispielcode wird dabei die folgende Ausnahme angezeigt db.Entry(a).Collection(x => x.S).IsModified = true: System.InvalidOperationException: 'Die Instanz des Entitätstyps' B 'kann nicht verfolgt werden, da bereits eine andere Instanz mit dem Schlüsselwert' {Id: 0} 'verfolgt wird. Stellen Sie beim Anhängen vorhandener Entitäten sicher, dass nur eine Entitätsinstanz mit einem bestimmten …
Betrachten Sie das folgende Programm. #include <iostream> template <typename T> void f( void ( *fn )( T ) ) { fn( 42 ); } void g( int x ) { std::cout << "g( " << x << " );\n"; } int main() { f( g ); } Das Programm wird …
Ich bin auf dieses Problem gestoßen Add<char> for String, als ich versucht habe, das Impl zur Standardbibliothek hinzuzufügen . Aber wir können es leicht replizieren, ohne Operator-Spielereien. Wir beginnen damit: trait MyAdd<Rhs> { fn add(self, rhs: Rhs) -> Self; } impl MyAdd<&str> for String { fn add(mut self, rhs: &str) …
Betrachten Sie das folgende Programm: #include<stdexcept> #include<iostream> int main() { try { throw std::range_error(nullptr); } catch(const std::range_error&) { std::cout << "Caught!\n"; } } GCC und Clang mit libstdc ++ rufen std::terminatedas Programm mit der Nachricht auf und brechen es ab terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct …
Diese Frage ergibt sich aus diesem Kommentar: Erklärung der Lambda-Lebensdauer für C ++ 20-Coroutinen zu diesem Beispiel: auto foo() -> folly::coro::Task<int> { auto task = []() -> folly::coro::Task<int> { co_return 1; }(); return task; } Die Frage ist also, ob die Ausführung der von zurückgegebenen Coroutine zu fooUB führen würde. …
Da P0593 die implizite Erstellung von Objekten für die Objektmanipulation auf niedriger Ebene akzeptiert wurde, können Objekte jetzt implizit in C ++ 20 erstellt werden. Insbesondere ermöglicht der durch den Vorschlag eingeführte Wortlaut, dass bestimmte Vorgänge (z. B. std::malloc) automatisch die Lebensdauer von Objekten bestimmter Typen, sogenannte implizite Lebensdauer-Typen , …
Angesichts der folgenden Vorlagenstruktur: template<typename T> struct Foo { Foo(T&&) {} }; Dies kompiliert und Twird abgeleitet als int: auto f = Foo(2); Dies wird jedoch nicht kompiliert: https://godbolt.org/z/hAA9TE int x = 2; auto f = Foo(x); /* <source>:12:15: error: no viable constructor or deduction guide for deduction of template …
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.