Articles of c ++ 11

Änderung des istream-Verhaltens in C ++ bei einem Fehler

Nimm von: cppreference Bis C ++ 11: Wenn die Extraktion fehlschlägt (z. B. wenn ein Buchstabe eingegeben wurde, an dem eine Ziffer erwartet wird), bleibt der Wert unverändert und Failbit ist gesetzt. Seit C ++ 11: Wenn die Extraktion fehlschlägt, wird Null in den Wert geschrieben und failbit gesetzt. Wenn bei der Extraktion der Wert […]

Mischen von C ++ 11 Atomics und OpenMP

OpenMP hat eine eigene Unterstützung für atomaren Zugriff, es gibt jedoch mindestens zwei Gründe, C ++ 11 Atomics vorzuziehen: Sie sind wesentlich flexibler und sie sind Teil des Standards. Auf der anderen Seite ist OpenMP leistungsfähiger als die C ++ 11-Thread-Bibliothek. Der Standard spezifiziert die atomare Operationsbibliothek und die threadunterstützende Bibliothek in zwei verschiedenen Kapiteln. […]

Was ist decltype mit zwei Argumenten?

Bearbeiten, um Verwechslungen zu vermeiden: decltype akzeptiert keine zwei Argumente. Siehe Antworten. Die folgenden zwei Strukturen können verwendet werden, um während der Kompilierzeit nach dem Vorhandensein einer Elementfunktion auf einem Typ T suchen: // Non-templated helper struct: struct _test_has_foo { template static auto test(T* p) -> decltype(p->foo(), std::true_type()); template static auto test(…) -> std::false_type; }; […]

Warum ist das Ändern einer Zeichenfolge durch einen abgerufenen pointers auf ihre Daten nicht zulässig?

In C ++ 11 müssen die Zeichen eines std::string zusammenhängend gespeichert werden, wie § 21.4.1 / 5 besagt: Die char-like-Objekte in einem basic_string-Objekt sollen zusammenhängend gespeichert werden. Das heißt, für jedes basic_string-Objekt s muss die Identität & * (s.begin () + n) == & * s.begin () + n für alle Werte von n gelten, […]

Wird ein Constexpr-Array bei einer Subskription unbedingt verwendet?

Gegeben der folgende Code: struct A { static constexpr int a[3] = {1,2,3}; }; int main () { int a = A::a[0]; int b [A::a[1]]; } ist A::a notwendigerweise odr-verwendet in int a = A::a[0] ? Hinweis: Diese Frage stellt eine weniger heikle / unlogische / endlose Version einer Debatte in der Lounge dar .

Unterschied zwischen std :: regex_match & std :: regex_search?

Unten Programm wurde geschrieben, um die “Day” Informationen mit dem C ++ 11 Std :: Regex_match & Std :: Regex_search abzurufen . Die Verwendung der ersten Methode gibt jedoch false und die zweite Methode gibt true (expected) zurück. Ich habe die Dokumentation und die bereits bestehende SO-Frage gelesen, aber ich verstehe den Unterschied zwischen diesen […]

Rekursive typedef functionsdefinition: std :: function gibt einen eigenen Typ zurück

Ich versuche eine Zustandsmaschine zu implementieren. Der Zustand wird durch eine function vom Typ callback_t repräsentiert: callback_t(int&) die eine function des gleichen Typs zurückgibt. Ich weiß nicht, wie man es implementiert, da die rekursive typisierte function nicht erlaubt ist. Hier was ich (als Spielzeug) probiert habe: #include #include typedef std::function callback_t ; callback_t f1(int & […]

Was garantiert die Standardbibliothek für die Selbstbewegung?

Was sagt der C ++ 11-Standard zur Selbstverschiebung in Bezug auf die Standardbibliothek? Um konkreter zu sein, was ist, wenn überhaupt, garantiert, was selfAssign macht? template std::vector selfAssign(std::vector v) { v = std::move(v); return v; }

Übermittlung der Call-Signatur eines Lambda oder beliebiger Callable für “make_function”

In einigen Situationen ist es wünschenswert, eine aufrufbare function (z. B. function, functionszeiger, Objektinstanz mit operator() , lambda, mem_fn ) type-löschen zu können, zum Beispiel in Boost-Adaptern mit C ++ 11-Lambdas, denen eine Kopie zuweisbar ist und ein Standard-Konstruktyp ist erforderlich. std::function wäre ideal, aber es scheint keine Möglichkeit zu geben, automatisch zu bestimmen, welche […]

Kann std :: vector kleine Pufferoptimierung nutzen?

Ich habe mich heute mit meinem Kollegen gefragt, ob man std :: vector implementieren kann, um eine kleine Pufferoptimierung zu nutzen. Wenn ich mir den C ++ 11-Entwurf anschaue, lese ich unter 23.3.1p8 Der Ausdruck a.swap (b), für die Container a und b eines anderen Standard-Containertyps als array, soll die Werte von a und b […]