string s; bool b[] = {s=="", s==s.c_str(), s.c_str()==""}; setzt b[] = {true, true, false}; Warum ist b[2]falsch? Wenn A==Bund A==C, sollte das nicht bedeuten
string s; bool b[] = {s=="", s==s.c_str(), s.c_str()==""}; setzt b[] = {true, true, false}; Warum ist b[2]falsch? Wenn A==Bund A==C, sollte das nicht bedeuten
Das folgende unsinnige Beispiel wird nicht kompiliert. Gibt es jedoch eine andere Möglichkeit, eine Variablenvorlage als Vorlagenvorlagenargument zu übergeben? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto
Eine überladene Funktion sollte beide Funktoren aufnehmen, da der Lambda-Typ entscheidbar ist (umsetzbar auf einen std::function(bitte korrigieren Sie mich, wenn ich falsch liege). Die Frage ist: Warum gibt es unten einen Kompilierungsfehler, obwohl der Lambda-Typ explizit ist definiert? (...
Ist das folgende (erfundenes Beispiel) in Ordnung oder ist es undefiniertes Verhalten: // undefined behavior? const auto& c = SomeClass{}; // use c in code later const auto& v =
Folgendes wird nicht kompiliert: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Probieren Sie es auf Godbolt Compilerfehler ist: error: assignment of read-only reference 's' In meinem...
Irgendeine Idee, warum das folgende Snippet nicht kompiliert wird? Es beschwert sich mit einem Fehler "Fehler: Operanden zu ?: Haben verschiedene Typen" auto lambda1 = [&](T& arg) { ... }; auto lambda2 = [&](T& arg) { ... }; auto lambda = condition ? lambda1 :
int a = 5; const int b = a, c = 4; int e[a]; int d[b]; int f[c]; Die Definition von f[c]ist gültig. Die Variable bist ebenfalls eine Konstante int, aber der Compiler gab mir den Fehler "Ausdruck muss einen konstanten Wert haben" für die Zeile int d[b]. Was sind die Unterschiede zwischen bund...
Alle Konstruktoren von std :: span sind als constexpr deklariert, aber ich kann anscheinend keinen von ihnen dazu bringen, in einem constexpr-Kontext zu arbeiten. Das Kommentieren eines der folgenden Constexpr führt zu einem Kompilierungsfehler. #include <array> #include <span> int...
Angenommen, ich habe einen aufrufbaren Typ wie folgt: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Beachten Sie, dass mutable_callablees eine Nicht-Konstante gibt operator(), die eine Mitgliedsvariable ändert ..... Angenommen, ich...
Mein Szenario ist das folgende (es hat in clang funktioniert, aber nicht in gcc) liba.hpp: inline int MY_GLOBAL = 0; libother.cpp: (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp: RunAppThatUsesBothLibAandLibOther(); Das Problem ist, dass die Inline-Variable an...
Wenn ich eine Schleife habe und innerhalb dieser Schleife eine neue Stapelvariable erstelle (ohne sie auf dem Heap zuzuweisen und die Variable, die sie im Schleifenkörper deklariert hält), wird der Destruktor dieses Objekts garantiert aufgerufen, bevor die nächste Iteration beginnt oder...
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...
Vor kurzem hatte ich Folgendes struct data { std::vector<int> V; }; data get_vector(int n) { std::vector<int> V(n,0); return {V}; } Das Problem mit diesem Code ist, dass beim Erstellen der Struktur eine Kopie auftritt und die Lösung stattdessen darin besteht, return {std :: move (V)} zu...
Beim Aufrufen std::sort()eines std::array: #include <vector> #include <array> #include <algorithm> int main() { std::vector<int> foo{4, 1, 2, 3}; sort(begin(foo), end(foo)); std::array<int, 4> foo2{4, 1, 2, 3}; sort(begin(foo2), end(foo2)); } Sowohl gcc als...
Ich kenne vom Compiler generierte Funktionen, die Dreierregel und die Fünferregel. In realen Szenarien ist es möglicherweise nicht trivial, genau herauszufinden, welche der vom Compiler generierten Funktionen (Konstruktoren, Zuweisungsoperatoren, Destruktoren) tatsächlich vom Compiler erstellt...
Aus der GCC-Implementierung entnommen, type_traitswarum hier static_castbenötigt wird? template <typename _Tp, typename... _Args> struct __is_nt_constructible_impl : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> {}; template <typename _Tp, typename _Arg>...
Ist der folgende Code legitim? template <int N> class foo { public: constexpr foo() { for (int i = 0; i < N; ++i) { v_[i] = i; } } private: int v_[N]; }; constexpr foo<5> bar; Clang akzeptiert es, aber GCC und MSVC lehnen es ab. Der Fehler von GCC ist: main.cpp:15:18:...
Zeitlimit pro Test: 5 Sekunden Speicherlimit pro Test: 512 Megabyte Sie erhalten eine Zeichenfolge mit seiner Länge n( n≤ 5000). Sie können jedes richtige Präfix dieser Zeichenfolge auswählen, das auch das Suffix ist, und entweder das ausgewählte Präfix oder das entsprechende Suffix...
Um void *eine Funktion von einer Funktion in CI zu erhalten, gehen Sie wie folgt vor (sehr einfaches Beispiel): void *get_ptr(size_t size) { void *ptr = malloc(size); return ptr; } Wie erreiche ich das gleiche Ergebnis bei der Verwendung
Die folgende Frage ist verwandt, die Antworten sind jedoch alt, und der Kommentar von Benutzer Marc Glisse legt nahe, dass es seit C ++ 17 neue Ansätze für dieses Problem gibt, die möglicherweise nicht angemessen diskutiert werden. Ich versuche, den ausgerichteten Speicher für SIMD ordnungsgemäß zu...