Articles of c ++ 11

Sollte ich jeden Header hinzufügen?

Sollte ich jeden Header hinzufügen, auch wenn er vorher schon enthalten war? Oder sollte ich es vielleicht vermeiden, wenn ich kann? Beispielsweise. Wenn ich in einer Datei std::string und std::vector verwende. Wenn enthalten sollte ich nur oder und einschließen?

pointers in C ++ nach dem Löschen

Nachdem ich viele Beiträge dazu gelesen habe, möchte ich den nächsten Punkt klarstellen: A* a = new A(); A* b = a; delete a; A* c = a; //illegal – I know it (in c++ 11) A* d = b; //I suppose it’s legal, is it true? Die Frage besteht also darin, den Wert der […]

Hash eines beliebigen Präzisionswerts (boost :: multicrecision :: cpp_int)

Ich brauche den Hashwert mit beliebiger Genauigkeit (von Boost.Multiprecision); Ich benutze das cpp_int Backend. Für den Moment habe ich folgenden Code erstellt: boost::multiprecision::cpp_int x0 = 1; const auto seed = std::hash{}(x0.str()); Ich brauche den Code nicht so schnell wie möglich, aber ich finde es sehr ungeschickt, die String-Darstellung zu hashen. Also meine Frage ist zweifach: […]

keine Übereinstimmung für ‘operator’ in ‘std :: operator’

Ich bin ein C ++ Neuling.Ich habe mein erstes Programm hier ausprobiert. Für mein Auge ist dieses Programm korrekt. #include using namespace std; class mystruct { private: int m_a; float m_b; public: mystruct(int x, float y) { m_a = x; m_b = y; } }; int main() { mystruct m = mystruct(5,3.14); cout << "my […]

Bereichsbasiertes for-loop für Array, das an die Nicht-Hauptfunktion übergeben wird

Wenn ich versuche, den folgenden Code in gcc 4.8.2 zu kompilieren, erhalte ich folgende Fehlermeldung: test.cc: In function ‘void foo(int*)’: test.cc:15:16: error: no matching function for call to ‘begin(int*&)’ for (int i : bar) { ^ Zusammen mit einer Reihe von anderen von tiefer in der Vorlagenbibliothek. #include using namespace std; void foo(int*); int main() […]

Warum versucht dieser Code, den Kopierkonstruktor aufzurufen?

Ich habe gerade übermäßig viel Zeit damit verbracht, mit einem Kompliplationserrors in Visual Studio herumzuspielen. Ich habe den Code in das kleine kompilierbare Beispiel unten destilliert und es auf IdeOne versucht und den gleichen Fehler bekommen, den Sie hier sehen können . Ich frage mich, warum der folgende Code versucht, B(const B&) anstelle von B(B&&) […]

Mit `std :: function ` rufen Sie eine nicht void-function auf

Vor std::function Zeit habe ich die std::function ungefähr so ​​verwendet: std::function func = [](int i) -> int { return i; }; Im Grunde genommen habe ich das getan, weil ich verschiedene functionsobjekte in einer std::function speichern wollte, aber ich wollte die Rückgabetypen dieser functionen nicht einschränken. Da dies zu funktionieren schien, ging ich mit. Aber […]

Alias-Vorlagenspezialisierung

Können Alias-Vorlagen (14.5.7) explizit spezialisiert sein (14.7.3)? Mein Standard-Fu versagt mir, und ich kann keinen Compiler zum Testen finden. Der Text “Wenn sich eine Vorlage-ID auf die Spezialisierung einer Alias-Vorlage bezieht” impliziert ja , aber dann scheint sich das Beispiel auf etwas anderes zu beziehen, was nichts andeutet. NB. Ich arbeite von n3242, eine hinter […]

Wie benutzt man C ++ 11 uniforme Initialisierungssyntax?

Ich kann nicht verstehen, wann und wie man die neue einheitliche Initialisierungssyntax in C ++ 11 verwendet. Zum Beispiel bekomme ich das: std::string a{“hello world”}; // OK std::string b{a}; // NOT OK Warum funktioniert es nicht im zweiten Fall? Der Fehler ist: error: no matching function for call to ‘std::basic_string::basic_string()’ mit dieser Version von g […]

Gibt es einen Compilererrors, der durch die Implementierung eines Typmerkmals is_complete verursacht wurde?

Ich habe diese C ++ 11-Merkmalsvorlage geschrieben, um zu prüfen, ob ein Typ vollständig ist: template using void_t = void; template struct is_complete : std::false_type {}; template struct is_complete<T, void_t> : std::true_type {}; und habe es so getestet: struct Complete {}; int main() { std::cout << is_complete::value << is_complete::value << '\n'; } Ich erwartete, dass […]