Als «c++11» getaggte Fragen

Verwenden Sie dieses Tag für Code, der als C ++ 11 kompiliert werden muss (ohne die in C ++ 14 oder höher eingeführten Funktionen zu verwenden).

6
Warum ist std :: initializer_list keine integrierte Sprache?
Warum ist keine std::initializer_listKernsprache eingebaut? Es scheint mir, dass es ein ziemlich wichtiges Feature von C ++ 11 ist und dennoch kein eigenes reserviertes Schlüsselwort (oder ähnliches) hat. Stattdessen handelt initializer_listes sich nur um eine Vorlagenklasse aus der Standardbibliothek, die über eine spezielle implizite Zuordnung aus der neuen Syntax der …

5
Kann ich einen Vektor vom Typ "Nur Verschieben" auflisten?
Wenn ich den folgenden Code durch meinen GCC 4.7-Snapshot übergebe, wird versucht, das unique_ptrs in den Vektor zu kopieren . #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Offensichtlich kann das nicht funktionieren, weil std::unique_ptres nicht kopierbar ist: Fehler: …


3
Wie kann ich richtig überprüfen, ob die Funktion std :: in C ++ 11 leer ist?
Ich habe mich gefragt, wie ich richtig prüfen soll, ob ein std::functionleer ist. Betrachten Sie dieses Beispiel: class Test { std::function<void(int a)> eventFunc; void registerEvent(std::function<void(int a)> e) { eventFunc = e; } void doSomething() { ... eventFunc(42); } }; Dieser Code wird in MSVC einwandfrei kompiliert, aber wenn ich doSomething()ohne …

2
Hat dieser Code aus Abschnitt 4.3.6 der 4. Ausgabe von „The C ++ Programming Language“ ein genau definiertes Verhalten?
In Bjarne Stroustrups The C ++ Programming Language 4. Ausgabe, Abschnitt 36.3.6 STL-ähnliche Operationen, wird der folgende Code als Beispiel für die Verkettung verwendet : void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, 4, "" ).replace( s.find( …



6
Berechnen der Länge eines C-Strings zur Kompilierungszeit. Ist das wirklich ein constexpr?
Ich versuche, die Länge eines String-Literals zur Kompilierungszeit zu berechnen. Dazu verwende ich folgenden Code: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } Alles funktioniert wie erwartet, das Programm druckt 4 …

15
Hat C ++ 11 Eigenschaften im C # -Stil?
In C # gibt es einen schönen Syntaxzucker für Felder mit Getter und Setter. Außerdem mag ich die automatisch implementierten Eigenschaften, mit denen ich schreiben kann public Foo foo { get; private set; } In C ++ muss ich schreiben private: Foo foo; public: Foo getFoo() { return foo; } …
93 c#  c++  class  c++11 

2
Was bedeutet [=] in C ++?
Ich möchte wissen was [=]macht? Hier ist ein kurzes Beispiel template <typename T> std::function<T (T)> makeConverter(T factor, T offset) { return [=] (T input) -> T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); Wie würde der Code funktionieren []anstatt [=]? Ich nehme das …
93 c++  c++11  lambda 

8
C ++ Lambda mit Captures als Funktionszeiger
Ich habe mit C ++ Lambdas und deren impliziter Konvertierung in Funktionszeiger gespielt. Mein Startbeispiel war, sie als Rückruf für die ftw-Funktion zu verwenden. Dies funktioniert wie erwartet. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int typeflag) …


3
Constexpr vs Makros
Wo sollte ich Makros bevorzugen und wo sollte ich constexpr bevorzugen ? Sind sie nicht im Grunde gleich? #define MAX_HEIGHT 720 vs. constexpr unsigned int max_height = 720;
93 c++  c++11  macros  constexpr 

2
C ++ 11 Lambda-Implementierung und Speichermodell
Ich möchte einige Informationen darüber, wie man richtig über C ++ 11-Schließungen nachdenkt und std::function wie sie implementiert werden und wie mit Speicher umgegangen wird. Obwohl ich nicht an vorzeitige Optimierung glaube, habe ich die Angewohnheit, die Auswirkungen meiner Auswahl auf die Leistung beim Schreiben von neuem Code sorgfältig zu …
92 c++  memory  lambda  c++11 


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.