Articles of c ++ 11

C ++ 11 make_pair mit angegebenen Vorlagenparametern wird nicht kompiliert

Ich spielte gerade mit g ++ 4.7 (einer der späteren Schnappschüsse) mit -std = C ++ 11 aktiviert. Ich habe versucht, einige meiner bestehenden Code-Basis zu kompilieren und ein Fall, der fehlgeschlagen ist, verwirrt mich. Ich würde mich freuen, wenn jemand erklären kann, was vor sich geht. Hier ist der Code #include #include #include #include […]

Wann sollte ich wirklich noexcept verwenden?

Das noexcept Schlüsselwort kann auf viele functionssignaturen angemessen angewendet werden, aber ich bin unsicher, wann ich es in der Praxis in Erwägung ziehen sollte. Basierend auf dem, was ich bisher gelesen habe, scheint die letzte Ergänzung von noexcept einige wichtige Probleme anzugehen, die entstehen, wenn Move-Konstruktoren casting. Ich bin jedoch immer noch nicht in der […]

Wie man Parameter richtig übergibt?

Ich bin ein C ++ Anfänger, aber kein Programmierer Anfänger. Ich versuche C ++ (c ++ 11) zu lernen und es ist für mich etwas unklar, das wichtigste: Parameter zu übergeben. Ich habe diese einfachen Beispiele betrachtet: Eine class, die alle ihre Elementtypen aufweist: CreditCard(std::string number, int expMonth, int expYear,int pin):number(number), expMonth(expMonth), expYear(expYear), pin(pin) Eine […]

Ist das Safe-Bool-Idiom in C ++ 11 veraltet?

Diese Antwort von @R. Martinho Fernandes zeigt, dass das Safe-Bool-Idiom in C ++ 11 scheinbar veraltet ist, da es durch ein einfaches ersetzt werden kann explicit operator bool() const; nach dem Standard-Zitat in der Antwort §4 [conv] p3 : Ein Ausdruck e kann genau dann in einen Typ T konvertiert werden, wenn die Deklaration T […]

Konvertieren von std :: __ cxx11 :: string in std :: string

Ich benutze C ++ 11, aber auch einige Bibliotheken, die nicht dafür konfiguriert sind und eine Typumwandlung benötigen. Insbesondere brauche ich eine Möglichkeit, std::__cxx11::string in reguläre std::string zu konvertieren, aber beim googlen finde ich keinen Weg dies zu tun und put (string) in den std::__cxx11::string zu stellen funktioniert nicht. Wenn ich nicht konvertiere, bekomme ich […]

C ++ Lambda mit Captures als functionszeiger

Ich spielte mit C ++ – Lambdas und deren impliziter Umwandlung in functionszeiger. Mein Startbeispiel war, sie als Callback für die ftw-function zu verwenden. Dies funktioniert wie erwartet. #include #include using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int typeflag) -> int { cout << fpath << […]

Rekursive Lambda-functionen in C ++ 11

Ich bin neu in C ++ 11. Ich schreibe die folgende rekursive Lambda-function, aber es kompiliert nicht. sum.cpp #include #include auto term = [](int a)->int { return a*a; }; auto next = [](int a)->int { return ++a; }; auto sum = [term,next,&sum](int a, int b)mutable ->int { if(a>b) return 0; else return term(a) + sum(next(a),b); […]

Welchen Vorteil bietet die Verwendung von universellen Referenzen in bereichsbasierten for-Schleifen?

const auto& würde ausreichen, wenn ich schreibgeschützte Operationen ausführen möchte. Allerdings bin ich reingekommen for (auto&& e : v) // v is non-const ein paar Mal in letzter Zeit. Das lässt mich fragen: Ist es möglich, dass es in einigen obskuren Fällen einen performancesvorteil bei der Verwendung von universellen Referenzen gibt, verglichen mit auto& oder […]

Was passiert mit einem gelöschten Thread, wenn main () beendet wird?

Angenommen, ich starte einen std::thread und detach() dann, so dass der thread weiter ausgeführt wird, obwohl der std::thread , der ihn einmal dargestellt hat, den Gültigkeitsbereich verlässt. Nehmen Sie weiterhin an, dass das Programm kein zuverlässiges Protokoll zum Verbinden des gelöschten Threads 1 hat , sodass der getriggerse Thread weiterhin ausgeführt wird, wenn main() . […]

Wie kann ich ABA-Zähler mit C ++ 11 CAS implementieren?

Ich implementiere eine blockierungsfreie Warteschlange basierend auf diesem Algorithmus , der einen Zähler verwendet, um das ABA-Problem zu lösen. Aber ich weiß nicht, wie man diesen Zähler mit C ++ 11 CAS implementiert. Zum Beispiel aus dem Algorithmus: E9: if CAS(&tail.ptr->next, next, ) Es ist eine atomare Operation, dh wenn tail.ptr->next gleich next ist, tail.ptr->next […]