Kann mir jemand sagen, ob std :: atomic :: is_lock_free () nicht so statisch wie constexpr ist? Es macht für mich keinen Sinn, es nicht statisch und / oder nicht kontextuell zu
Kann mir jemand sagen, ob std :: atomic :: is_lock_free () nicht so statisch wie constexpr ist? Es macht für mich keinen Sinn, es nicht statisch und / oder nicht kontextuell zu
Gibt es funktional und syntaktisch einen Unterschied zwischen einer Funktion, deren Prototyp ist int foo(void)und int foo(void *)? Ich kenne den Unterschied zwischen zum Beispiel int bar(int)und int bar(int *)- einer von ihnen sucht nach einem int und der andere sucht nach einem int-Zeiger. Hat...
push_back , begin , end werden in https://docs.microsoft.com/en-us/cpp/parallel/concrt/reference/concurrent-vector-class?view=vs-2019#push_back als gleichzeitig sicher beschrieben Der folgende Code bestätigt jedoch. Wahrscheinlich, weil das Element hinzugefügt, aber noch nicht initialisiert wurde....
Der Ausdruck "passiert stark vor" wird im C ++ - Entwurfsstandard mehrmals verwendet. Zum Beispiel: Kündigung [basic.start.term] / 5 Wenn der Abschluss der Initialisierung eines Objekts mit statischer Speicherdauer stark vor einem Aufruf von std :: atexit erfolgt (siehe [support.start.term]), wird...
Zuordnung: Übersetzen Sie die folgenden Ausdrücke in natürlicher Sprache in C ++ - Ausdrücke. Angenommen, alle Variablen sind nicht negative Zahlen oder Boolesche Werte (mit dem Wert true oder false). Natürliche Sprache: Entweder a und b sind beide falsch oder c ist wahr, aber nicht...
Ich weiß, dass std::arrayder Stapel vollständig zugeordnet ist, aber diese Frage ist durch Sicherheitsbedenken motiviert, die zwei Dinge erfordern: Die Daten in std::arraywerden bei Zerstörung auf Null gesetzt oder zufällig ausgewählt Die eingehenden Daten std::arraywerden gesperrt , sodass sie...
Ich habe mit einem Kollegen über lock_guard gestritten, und er schlug vor, dass lock_guard aufgrund der Kosten für die Instanziierung und Unistantiierung der Klasse lock_guard wahrscheinlich langsamer als mutex :: lock () / mutex :: refresh () ist. Dann habe ich diesen einfachen Test erstellt und...
Angenommen, ich habe eine Klasse, die so aussieht (dies ist nur ein Beispiel): class A { double *ptr; public: A() : ptr( new double[100] ) {} A( const A &other ) { other.ptr[7] = 15; } void doNotChangeMyData() const { ptr[43] = 14; } void changeMyData() { ptr[43] = 14; } ~A() { delete[] ptr; }...
In C ++ 20 u8basieren String-Literale auf dem char8_tTyp. Sie konvertieren absichtlich nicht char const*mehr zu: const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20 Das ultimative Ziel bei der Migration auf C ++ 20 ist natürlich, das neue Verhalten vollständig zu übernehmen (im...
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...
Betrachten Sie 1) eine benutzerdefinierte Klasse mit einem potenziell großen Speicherdruck und 2) eine Funktion der obersten Ebene, die eine Vorverarbeitung durchführt und dann ein neues Objekt unserer benutzerdefinierten Klasse erstellt und zurückgibt. Um unnötiges Kopieren nach Wert zu vermeiden,...
Ich weiß, dass Zeigerarithmetik für Nullzeiger nicht zulässig ist. Aber stell dir vor, ich habe so etwas: class MyArray { int *arrayBegin; // pointer to the first array item, NULL for an empty array unsigned arraySize; // size of the array, zero for an empty array public: int *begin() const {...
Gibt die C ++ - Spezifikation die Reihenfolge operator newund den Konstruktor von Ain an new C(A())? Das g ++ ließ die Reihenfolge sein A()-> new-> C(), aber clang ++ ließ es sein new->A() -> C(). Wird der Unterschied durch nicht angegebenes Verhalten verursacht? g ++: 7.4.0 clang...
Angenommen, ich habe den folgenden Code: #include <iostream> #include <string> #include <iomanip> using namespace std; // or std:: int main() { string s1{ "Apple" }; cout << boolalpha; cout << (s1 == "Apple") << endl; //true } Meine Frage ist: Wie prüft...
Betrachten Sie den folgenden Code: struct A { // No data members //... }; template<typename T, size_t N> struct B : A { T data[N]; } So müssen Sie B initialisieren: B<int, 3> b = { {}, {1, 2, 3} }; Ich möchte das unnötige leere {} für die Basisklasse vermeiden. Es gibt eine Lösung von...
class FooView final : public Something { ... void refresh() { this->~FooView(); new (this) FooView(); } } Ich habe diese Redewendung noch nie gesehen, und es scheint, als könnte sie wirklich subtil und chaotisch sein, aber ich kann mir kein Problem damit vorstellen (solange FooViewes...
Ich weiß, dass dies ein ziemlich häufiges Thema ist, aber so leicht die typische UB zu finden ist, habe ich diese Variante bisher nicht gefunden. Daher versuche ich, Pixelobjekte formell einzuführen und dabei eine tatsächliche Kopie der Daten zu vermeiden. Ist das gültig? struct Pixel { uint8_t...
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>...
#include <iostream> using namespace std; template <class X, class Y> Y big(X a, Y b) { if (a > b) return (a); else return (b); } int main() { cout << big(32.8, 9); } Hier verwende ich Vorlagen in CPP. Wenn ich also die Funktion bigaufrufe, die Argumente doubleund intTyp umgeht...
Ich habe es mit Code zu tun, der nicht von mir geschrieben wurde. Ich habe diese Aussage: // p is type of std::unique_ptr<uint8_t[]> if (p < 0) { /* throw an exception */ } Was bedeutet p < 0das in diesem Zusammenhang? Auf der Dokumentationsseite glaube ich, dass mein Fall ist 16) y...