Was sind eure Highlights von C++14?
-
nixkapierer schrieb:
Was macht das?
- Der Rückgabewert der Funktion "einfach_genial" wird automatisch erkannt, deshalb kann ich Lambdas von Funktionen zurückgeben.
- Endlich sind polymorphische Lambdas möglich.
-
Und was ist der Datentyp von higher_order?
-
<a href= schrieb:
http://www.meetingcpp.com/index.php/br/items/a-look-at-c14-papers-part-2.html">N3559 - Proposal for Generic (Polymorphic) Lambda Expressions
C++11 lambdas are implemented as a class with a non template call operator. When the parameters of a lambda function are of type auto, the anonymous class representing the lambda could contain a templated call operator() as implementation. The authors propose to
allow auto type-specifier to indicate a generic lambda parameter
allow conversion from a capture-less generic lambda to an appropriate pointer-to-functionThis proposal builds up on the Portland proposal for generic lambdas.
-
gar nix c++ wird von version zu version schlechter
-
http://gcc.gnu.org/projects/cxx1y.html nur zur Info
-
-
Ich mag
std::dynarray, die neuen user-defined literals in der Standardbibliothek, natürlich automatisch erkannte Rückgabetypen und polymorphe Lambdas...Aber bei mir ganz vorne dabei, der swap-Operator:
a :=: b;Auch überladbar in Klassen, etc.

-
Sone schrieb:
ie neuen user-defined literals in der Standardbibliothek
Kannst du eine Referenz dafür geben?
-
Benutzernamen schrieb:
Sone schrieb:
ie neuen user-defined literals in der Standardbibliothek
Kannst du eine Referenz dafür geben?
Laut http://gcc.gnu.org/projects/cxx0x.html schon in gcc 4.7 drin???

-
und damit schon in C++11. Was ist da neu bei C++14?
-
In der Standardbibliothek? Nein. Nur UDLs als Sprachfeature. N3531 beschreibt was ich meinte, und das gibt es - aber erst seit C++14.
Hier übrigens ein erster ISO-Draft von C++14: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf
-
Sone schrieb:
Aber bei mir ganz vorne dabei, der swap-Operator:
a :=: b;Auch überladbar in Klassen, etc.
Der wird ja hoffentlich in breiter Front abgelehnt. Darauf hat nun wirklich niemand gewartet...
Im Bezug auf Bibliotheksfeatures finde ich std::make_unique und std::optional noch nett.
<
>
-
Sone schrieb:
In der Standardbibliothek? Nein. Nur UDLs als Sprachfeature. N3531 beschreibt was ich meinte, und das gibt es - aber erst seit C++14.
Hier übrigens ein erster ISO-Draft von C++14: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf
Also für strings, complex und chrono, richtig?
-
Hm, schwierig, da gab es einige sehr gute Proposals

Vieles wird es wohl nicht in den Standard schaffen.Mich reizt zum einen die Bugfixes, welche mit C++14 für C++11 kommen,
und damit C++11 vervollständigen, und die bessere concurrency unterstützung.
Die Idee von resumable functions (async/await) finde ich recht reizvoll z.B.
-
Sone schrieb:
Aber bei mir ganz vorne dabei, der swap-Operator:
a :=: b;Wie würde man sowas machen, also ohne den Operator?
-
std::swap(a,b);
?
-
Frage_Swap schrieb:
Sone schrieb:
Aber bei mir ganz vorne dabei, der swap-Operator:
a :=: b;Wie würde man sowas machen, also ohne den Operator?
swap(a, b)
-
hmmmmmmmmmm schrieb:
Also für strings, complex und chrono, richtig?

Ja,
make_uniqueist auch ein nettes Goodie. Frage mich, wieso es keinmake_uniquein C++11 gibt...
-
Sone schrieb:
Aber bei mir ganz vorne dabei, der swap-Operator:
a :=: b;Auch überladbar in Klassen, etc.

Dieser Blödsinn wurde zum Glück nicht angenommen. Hätte mich auch gewundert.
Wenn schon für jeden Mist ein Operator, dann richtig:
//move-Operator a ~= b; //begin und end Operatoren, weil die so lustig aussehen. std::begin(range) == :-) range std::end(range) == :-( range for (auto i = :-) range; i != :-( range; ++i) //switch-Operator: Endlich kann man switch-Statements in eine Zeile quetschen. int f(int a) { switch (a) { case 0: return 1; case 2: return 3; default: return 2; } } int f(int a) { return a ?? 0: 1 ?: 2: 3 ?: 2; } //Inkrementieren und Dekrementieren um zwei! int i = 0; i+++; assert(i == 2); //uniform initialization für enum enum e { a{0}, b{1} }; //geschweifte Klammern überladen struct S { static std::string operator {} () { return "jo"; } }; assert(S{} == "jo");Das alles ist nicht weniger sinnvoll als der Swapperator.
-
Ich fand die Idee zuerst auch bescheuert, zugegeben:
Sone schrieb:
Und swap-Operatoren hört sich ziemlich lustig, dennoch unnötig an.
Ich habe immer noch dieselbe Meinung darüber - prinzipiell nur Syntaxzucker, nichts weiter. Trotzdem mag ich es und es hätte mich gefreut, würde es angenommen werden.
TyRoXx schrieb:
Das alles ist nicht weniger sinnvoll als der Swapperator.
Doch. Einiges würde existierende Syntax in den Grundfesten erschüttern und ist darüber hinaus schlecht lesbar.
Ich finde die derzeitige Syntax für einen Swap-Operator auch doof, zugegeben. Sieht auf die Dauer unlesbar aus. Da ist mirswap(a, b)lieber.