Articles of c ++ 11

Welche neuen functionen fügen benutzerdefinierte Literale zu C ++ hinzu?

C ++ 11 führt benutzerdefinierte Literale ein , die die Einführung einer neuen literalen Syntax ermöglichen, die auf vorhandenen Literalen ( int , hex , string , float ) basiert, so dass jeder Typ eine literale Präsentation haben kann. Beispiele: // imaginary numbers std::complex operator “” _i(long double d) // cooked form { return std::complex(0, […]

Ist das Schlüsselwort ‘override’ nur eine Überprüfung für eine überschriebene virtuelle Methode?

Soweit ich weiß, ist die Einführung des Schlüsselwortes override in C ++ 11 nichts anderes als eine Überprüfung, um sicherzustellen, dass die implementierte function das override einer virtual function in der Basisklasse ist. Ist es das?

Thread-Pooling in C ++ 11

Relevante Fragen : Über C ++ 11: C ++ 11: Std :: Thread gepoolt? Wird async (launch :: async) in C ++ 11 Thread-Pools überflüssig machen, um teure Threads zu vermeiden? Über Boost: C ++ boost Thread wiederverwendet Threads boost :: thread und erstelle einen Pool von ihnen! Wie erhalte ich einen Pool von Threads, […]

Wie erkennt man C ++ 11 Unterstützung eines Compilers mit CMake

Gibt es eine Möglichkeit, CMake automatisch erkennen zu lassen, wenn ein Compiler C ++ 11 unterstützt oder nicht? Es wäre schön, die Benutzer während des Cmake-Laufs darüber zu informieren, dass der Code nicht kompiliert wird, da der Compiler C ++ 11 nicht unterstützt. Im Moment habe ich die C ++ 11 Flags gesetzt. Wenn ein […]

Wie unterscheidet sich “= default” von “{}” für Standardkonstruktor und Destruktor?

Ich habe dies ursprünglich nur als Frage über Destruktoren geschrieben, aber jetzt füge ich Überlegungen zum Standardkonstruktor hinzu. Hier ist die ursprüngliche Frage: Wenn ich meiner class einen Destruktor geben möchte, der virtuell ist, aber ansonsten dasselbe ist, was der Compiler erzeugen würde, kann ich =default : class Widget { public: virtual ~Widget() = default; […]

Ist es schlau, boost :: thread und boost :: mutex durch C ++ 11-Äquivalente zu ersetzen?

Motivation: Der Grund, warum ich darüber nachdenke, ist, dass mein genialer Projektmanager denkt, dass Boost eine weitere Abhängigkeit ist und dass es schrecklich ist, weil “du davon abhängig bist” (Ich habe versucht, die Qualität von Boost zu erklären, dann gab ich nach einiger Zeit auf 🙁 Kleinerer Grund, warum ich das gerne machen würde, ist, […]

Ist die Größe von std :: array standardmäßig definiert?

In C ++ ist 11 std::array so definiert, dass es zusammenhängenden Speicher und Performance hat, die nicht schlechter als ein Array ist, aber ich kann nicht entscheiden, ob die verschiedenen Anforderungen des Standards std :: array die gleiche Größe und Speicher haben Layout als normales Array. Das heißt, können Sie auf sizeof(std::array) == sizeof(int)*N oder […]

Sollten wir einen shared_ptr als Referenz oder als Wert übergeben?

Wenn eine function ein shared_ptr (von Boost oder C ++ 11 STL) nehmen soll, übergeben Sie es by const Referenz: void foo(const shared_ptr& p) oder nach Wert: void foo(shared_ptr p) ? Ich würde die erste Methode bevorzugen, weil ich vermute, dass sie schneller ist. Aber ist das wirklich ein Wert oder gibt es irgendwelche zusätzlichen […]

initializer_list und Vorlagentyp Abzug

Betrachten Sie die function: template void printme(T&& t) { for (auto i : t) std::cout << i; } oder jede andere function, die einen Parameter mit einem begin () / end () – aktivierten Typ erwartet. Warum ist das Folgende illegal? printme({‘a’, ‘b’, ‘c’}); Wenn all dies legitim ist: printme(std::vector({‘a’, ‘b’, ‘c’})); printme(std::string(“abc”)); printme(std::array {‘a’, […]

Warum ist C ++ 11s POD “Standardlayout” Definition so wie es ist?

Ich untersuche die neue, entspannte POD-Definition in C ++ 11 (Abschnitt 9.7). Eine Standardlayout-class ist eine class, die hat keine nicht statischen Datenelemente vom Typ Nicht-Standard-Layout-class (oder Array von solchen Typen) oder Referenz, hat keine virtuellen functionen (10.3) und keine virtuellen Basisklassen (10.1), hat die gleiche Zugriffskontrolle (Klausel 11) für alle nicht statischen Datenmitglieder, hat […]