Articles of c ++ 11

Dynamisch ausgerichtete Speicherzuordnung in C ++ 11

posix_memalign und _aligned_malloc unter Windows erlauben es, einen ausgerichteten Speicherbereich dynamisch zuzuweisen. Gibt es in C ++ 11 etwas Ähnliches? Soweit ich weiß, alignas Schlüsselwort alignas nur mit statisch zugewiesenen Objekten.

Bind gegen Lambda?

Ich habe eine Frage, welcher Stil bevorzugt wird: std :: bind Vs Lambda in C ++ 0x. Ich weiß, dass sie verschiedenen Zwecken dienen, aber nehmen wir ein Beispiel von sich überschneidender functionalität. Verwenden von lambda : uniform_int distribution(1, 6); mt19937 engine; // lambda style auto dice = [&]() { return distribution(engine); }; bind : […]

Wie wahr ist “Willst du Speed? Übergabe nach Wert “

Korrigiere mich, wenn ich falsch liege. Sag ich habe: struct X { std::string mem_name; X(std::string name) : mem_name(std::move(name)) {} … }; struct Y { std::string mem_name; Y(const std::string &name) : mem_name(name) {} … }; In X ‘s ctor, name ist offensichtlich eine Kopie von was auch immer Argument an X , X ruft die Bewegung […]

Gibt es einen Fall, in dem die Rückgabe einer RValue-Referenz (&&) sinnvoll ist?

Gibt es einen Grund, wenn eine function eine RValue-Referenz zurückgeben soll ? Eine Technik oder ein Trick oder ein Idiom oder ein Muster? MyClass&& func( … ); Ich bin mir der Gefahr bewusst, Referenzen im Allgemeinen zurückzugeben, aber manchmal tun wir es trotzdem, nicht wahr ( T& T::operator=(T) ist nur ein idiomatisches Beispiel). Aber wie […]

Berechnen der Länge einer C-Zeichenfolge zum Zeitpunkt der Kompilierung. Ist das wirklich ein Constexpr?

Ich versuche, die Länge eines String-Literals zum Zeitpunkt der Kompilierung zu berechnen. Dazu benutze ich folgenden Code: #include int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf(“%d %d”, length(“abcd”), length(“abcdefgh”)); } Alles funktioniert wie erwartet, das Programm gibt 4 und 8 aus. Der […]

Erfassen einer Referenz durch Referenz in einem C ++ 11 Lambda

Bedenken Sie: #include #include std::function make_function(int& x) { return [&]{ std::cout << x << std::endl; }; } int main() { int i = 3; auto f = make_function(i); i = 5; f(); } Ist dieses Programm garantiert 5 auszugeben, ohne undefiniertes Verhalten aufzurufen? Ich verstehe, wie es funktioniert, wenn ich x nach Wert ( [=] […]

Wie ist Meyers Implementierung eines Singleton tatsächlich ein Singleton

Ich habe viel über Singletons gelesen, wann sie sollten und nicht verwendet werden sollten und wie man sie sicher implementiert. Ich schreibe in C ++ 11 und bin auf die faul initialisierte Implementierung eines Singleton durch Meyer gestoßen, wie man in dieser Frage sieht . Diese Implementierung ist: static Singleton& instance() { static Singleton s; […]

“Downcasting” unique_ptr bis unique_ptr

Ich habe eine Reihe von Fabriken, die unique_ptr . Unter der Haube bieten sie jedoch pointers auf verschiedene abgeleitete Typen, dh unique_ptr , unique_ptr , unique_ptr usw. Angesichts DerivedA : Derived und Derived : Base wir: unique_ptr DerivedAFactory() { return unique_ptr(new DerivedA); } Was ich tun muss, ist, den pointers von der zurückgegebenen unique_ptr auf […]

Element aus Vektor entfernen, während in C ++ 11 Bereich für “Schleife”?

Ich habe einen Vektor von IInventory *, und ich bin durch die Liste mit C ++ 11 Bereich für, um Sachen mit jedem zu tun. Nachdem ich einige Sachen mit einem gemacht habe, möchte ich es vielleicht aus der Liste entfernen und das Objekt löschen. Ich weiß, dass ich auf dem pointers jederzeit delete kann, […]

Das Überprüfen eines Mitglieds ist möglich, möglicherweise in einer Basisklasse, C ++ 11-Version

In https://StackOverflow.com/a/1967183/134841 wird eine Lösung bereitgestellt, um statisch zu prüfen, ob ein Member existiert, möglicherweise in einer Unterklasse eines Typs: template class has_resize_method { class yes { char m;}; class no { yes m[2];}; struct BaseMixin { void resize(int){} }; struct Base : public Type, public BaseMixin {}; template class Helper{}; template static no deduce(U*, […]