Articles of c ++ 11

Wie kann ich nach C ++ 11-Unterstützung suchen?

Gibt es eine Möglichkeit, zur Kompilierzeit festzustellen, ob der Compiler bestimmte functionen von C ++ 11 unterstützt? Zum Beispiel so etwas: #ifndef VARIADIC_TEMPLATES_SUPPORTED #error “Your compiler doesn’t support variadic templates. :(” #else template class Tuple { // … } #endif

Unterschiede zwischen unique_ptr und shared_ptr

Mögliche Duplikate: pimpl: shared_ptr oder unique_ptr Smart Pointer (Boost) erklärt Könnte jemand Unterschiede zwischen shared_ptr und unique_ptr erklären?

Warum kann C ++ 11 In-Class-Initialisierer keine Klammern verwenden?

Zum Beispiel kann ich das nicht schreiben: class A { vector v(12, 1); }; Ich kann das nur schreiben: class A { vector v1{ 12, 1 }; vector v2 = vector(12, 1); }; Was ist die Berücksichtigung der Unterschiede im C ++ 11-Sprachdesign?

Wie konvertiert man ein Lambda zu einer std :: -function mit Vorlagen

Im Grunde genommen möchte ich ein Lambda mit einer beliebigen Anzahl von Parametern erzeugen und in eine std :: -function umwandeln. Ich habe folgendes versucht und keine der Methoden funktioniert. std::function([](){});//Complains that std::function is missing template parameters template void foo(function f){} foo([](){});//Complains that it cannot find a matching candidate Der folgende Code funktioniert jedoch, aber […]

Confly-Time-Zeichenfolgen in C ++ bequem deklarieren

In der Lage zu sein, Strings während der Kompilierung in C ++ zu erstellen und zu bearbeiten, hat mehrere nützliche Anwendungen. Obwohl es in C ++ möglich ist, Zeichenfolgen zur Kompilierzeit zu erstellen, ist der process sehr umständlich, da die Zeichenfolge als eine variadische Zeichensequenz deklariert werden muss, z using str = sequence; Operationen wie […]

Wie rufe ich :: std :: make_shared für eine class mit nur geschützten oder privaten Konstruktoren auf?

Ich habe diesen Code, der nicht funktioniert, aber ich denke, die Absicht ist klar: testmakeshared.cpp #include class A { public: static ::std::shared_ptr create() { return ::std::make_shared(); } protected: A() {} A(const A &) = delete; const A &operator =(const A &) = delete; }; ::std::shared_ptr foo() { return A::create(); } Aber ich bekomme diesen Fehler, […]

Verwenden von externem Template (C ++ 11)

Abbildung 1: functionsvorlagen TemplHeader.h template void f(); TemplCpp.cpp template void f(){ //… } //explicit instantation template void f(); Haupt.cpp #include “TemplHeader.h” extern template void f(); //is this correct? int main() { f(); return 0; } Ist dies der richtige Weg, um extern template , oder verwende ich dieses Schlüsselwort nur für classnvorlagen wie in Abbildung […]

Verschieben Sie die Aufnahme in Lambda

Wie erfasse ich in einem C ++ 11-Lambda durch Verschieben (auch bekannt als R-Wert-Referenz)? Ich versuche so etwas zu schreiben: std::unique_ptr myPointer(new int); std::function = [std::move(myPointer)]{ (*myPointer) = 4; };

C ++ 11 führte ein standardisiertes Speichermodell ein. Was heißt das? Und wie wird es die C ++ Programmierung beeinflussen?

C ++ 11 führte ein standardisiertes Speichermodell ein, aber was genau bedeutet das? Und wie wird es die C ++ Programmierung beeinflussen? Dieser Artikel (von Gavin Clarke, der Herb Sutter zitiert) sagt, dass Das Speichermodell bedeutet, dass C ++ – Code jetzt eine standardisierte Bibliothek zum Aufrufen hat, unabhängig davon, wer den Compiler erstellt hat […]

Warum kompiliert dieses C ++ – Snippet (die nicht-void-function gibt keinen Wert zurück)

Das habe ich heute morgen in einer meiner Bibliotheken gefunden: static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out) { tvec3::Min(a,b,out); out.w = min(aw,bw); } Ich würde einen Compiler-Fehler erwarten, da diese Methode nichts zurückgibt und der Rückgabetyp nicht void . Die einzigen zwei Dinge, die in den Sinn kommen, sind An der einzigen […]