Articles of c ++ 11

Wie std :: hash :: operator () für benutzerdefinierten Typ in ungeordneten Containern zu spezialisieren?

Um benutzerdefinierte Schlüsseltypen in std::unordered_set und std::unordered_map zu unterstützen, muss man operator==(Key, Key) und einen Hash-Funktor bereitstellen: struct X { int id; /* … */ }; bool operator==(X a, X b) { return a.id == b.id; } struct MyHash { size_t operator()(const X& x) const { return std::hash()(x.id); } }; std::unordered_set s; Es wäre bequemer, […]

Trailing-Rückgabetyp mit Decltype mit einer variadischen Template-function

Ich möchte einen einfachen Addierer (für Kichern) schreiben, der jedes Argument addiert und eine Summe mit dem passenden Typ zurückgibt. Derzeit habe ich Folgendes: #include using namespace std; template T sum(const T& in) { return in; } template auto sum(const T& t, const P&… p) -> decltype(t + sum(p…)) { return t + sum(p…); } […]

C ++ 11-Aggregat-Initialisierung für classn mit nicht statischen Memberinitialisierungen

Ist es im Standard erlaubt: struct A { int a = 3; int b = 3; }; A a{0,1}; // ??? Ist diese class noch aggregiert? clang akzeptiert diesen Code, aber gcc nicht.

Aktivieren Sie C ++ 11 in Eclipse CDT (Juno / Kepler / Luna) Indexer

Wie aktiviere ich die Unterstützung für den neuen C ++ – Standard auf dem Eclipse CDT-Indexer in Juno / Kepler / Luna?

reinterpret_cast erstellt ein trivial standardkonstruierbares Objekt

cppreference † besagt: Objekte mit trivialen Standardkonstruktoren können mit reinterpret_cast auf jedem geeignet ausgerichteten Speicher erstellt werden, z. B. auf Speicher, der mit std::malloc zugewiesen wurde. Dies bedeutet, dass der folgende Code gut definiert ist: struct X { int x; }; alignas(X) char buffer[sizeof(X)]; // (A) reinterpret_cast(buffer)->x = 42; // (B) Drei Fragen folgen: Ist […]

Bedeutet const threadsicher in C ++ 11?

Ich höre, dass const threadsicher in C ++ 11 bedeutet . Ist das wahr? Bedeutet das, dass const jetzt das Äquivalent von Java ist ? Haben sie keine Keywords mehr ?

const vs conexpr auf Variablen

Gibt es einen Unterschied zwischen den folgenden Definitionen? const double PI = 3.141592653589793; constexpr double PI = 3.141592653589793; Wenn nicht, welcher Stil wird in C ++ 11 bevorzugt?

Können virtuelle functionen Standardparameter haben?

Wenn ich eine Basisklasse (oder Interface-class) deklariere und einen Standardwert für einen oder mehrere Parameter festlege, müssen die abgeleiteten classn dieselben Standardwerte angeben, und wenn nicht, welche Standardwerte werden in den abgeleiteten classn angezeigt? Nachtrag: Ich bin auch daran interessiert, wie dies in verschiedenen Compilern gehandhabt werden kann und wie man in diesem Szenario “empfohlen” […]

Eclipse CDT-Indexer kennt keine C ++ 11-Container

Ich habe ein C ++ 11-Projekt in Eclipse CDT konfiguriert, um gcc-4.7 zu verwenden. Es ist nicht der Standardcompiler auf meinem System, der C ++ 11 nicht unterstützt. Damit die Kompilierung funktioniert, muss ich das Flag -std=c++11 und außerdem den folgenden Header-Pfad /usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2 : /usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2 Immer wenn ich C ++ 11 Containertypen wie std::unordered_set oder […]

Gibt es irgendeine Verwendung für unique_ptr mit Array?

std::unique_ptr bietet Unterstützung für Arrays, zum Beispiel: std::unique_ptr p(new int[10]); aber ist es nötig? wahrscheinlich ist es bequemer, std::vector oder std::array . Finden Sie irgendeine Verwendung für dieses Konstrukt?