Welche C++11 Features verwendet ihr häufig?
-
move (<- Mit großem Abstand vor allem anderen)
Und dann so ziemlich alles was VS 2013 unterstützt: Lambdas, auto, static_assert, nullptr, variadic templates, ...
-
Nichts, außer zum Üben, da vom Chef verboten.
-
auto, lambdas, nullptr
Edit:
ging vergessen: range based for-loop
-
Och, ich bediene mich da hier und da Dingen, von denen ich weiß, dass die populären Compiler, die vor 2 Jahren aktuell waren, das schon konnten. Das ist so meine persönliche Schmerzgrenze. Wenn das Teil älter als 2 Jahre ist, kann ich erwarten, dass man sich 'ne aktuellere Version installiert.
&&
(aber nicht als Ref-Qualifier)
auto
decltype
->
(late-specified return type)
static_assert
std::enable_if
und was sonst noch so in<type_traits>
drin ist
std::unique_ptr
std::shared_ptr
std::tuple
std::unordered_map
LambdasAber das kann ich mir auch erlauben, weil wir ein sehr kleines Team in einer Forschungseinrichtung sind, dessen Software hauptsächlich "in-house" genutzt wird. Die Hauptsache ist, dass man das für Windows und Linux kompiliert bekommt.
-
constexpr
nullptr
Variadic Templates
Move-Semantics
Lambdas
override
Delegating ConstructorsManchmal auch decltype und auto.
Edit: Und std::initializer_list (sehr praktisch)
-
So ziemlich alles, da kann man auflisten:
- inheriting / delegating ctorsnullptr
,static_assert
- alles aus allen Bibliotheksheadern, falls benötigt.
- variadic templates, perfect forwarding mit URefs
- Move-Semantik natürlich
- Und das öfteste:auto
als type-specifier, auch evt.decltype(auto)
.
- Selbstverständlich range-based for, das ist eine Augenweide.
- Noch viel weiteres.
Und was benutzt ihr aus C++1y?
-
Singender Holzkübel schrieb:
Und std::initializer_list (sehr praktisch)
Wofür denn das?
-
Arcoth schrieb:
Singender Holzkübel schrieb:
Und std::initializer_list (sehr praktisch)
Wofür denn das?
ich vermute, damit er seine eigenen klassen wie aggregate initialisieren kann.
-
Arcoth schrieb:
Singender Holzkübel schrieb:
Und std::initializer_list (sehr praktisch)
Wofür denn das?
Diverse Initialisierungen.
Arcoth schrieb:
Und was benutzt ihr aus C++1y?
constexpr
-
Arcoth schrieb:
Und was benutzt ihr aus C++1y?
Nichts.
Aber ich freue mich schon ein bisschen auf polymorphe Lambdas und Return-Type Deduction für "normale" Funktionen. Letzteres ist ja besonders für Template-lastigen Code interessant. Damit könnte ich mir hier z.B. die nervigen "->decltype(...)" sparen.
-
Singender Holzkübel schrieb:
Arcoth schrieb:
Und was benutzt ihr aus C++1y?
constexpr
das gibt es schon in c++11.
-
Gibts da eigentlich irgendwo eine nette Übersicht für C++1Y Features?
-
asfdlol schrieb:
Singender Holzkübel schrieb:
Arcoth schrieb:
Und was benutzt ihr aus C++1y?
constexpr
das gibt es schon in c++11.
Ja, aber nicht so!
-
Ich liste hier nur die am häufigsten benutzten C++11-Features auf.
Sprache: Lambda-Ausdrücke,
auto
, Range-Based For, Move-Semantik,nullptr
Bibliothek:
function
,unique_ptr
-
Lambda, move, forward, auto, range based for, sämtliche neuen Methoden von Containern sowie neue Algorithmen, unique_ptr, shared_ptr (eigentlich nur bei dem einen Projekt), nullptr.
-
nullptr ist einfach toll, lambdas und diverse neue Container-Funktionen. Der Rest taucht mal so hin und wieder auf, wenn ich merke dass man manche Dinge mit C++11 Features übersichtlicher/schneller/schöner/besser lösen kann.^^
-
Sprache: Move-Semantic, auto, variadic templates
Library: unique_ptr, hashmapsWas ich nicht oder äusserst selten verwende:
initializer_list, shared_ptr, foreach (wozu?), Encoding-Facetten.Was ich aus C++14 vermisse:
Return-Type-Deduction, polymorphe Lambdas und Concepts.
-
fgbjaeh schrieb:
Was ich nicht oder äusserst selten verwende:
... foreach (wozu?)Gibt's in C++ ja auch nicht
-
fgbjaeh schrieb:
Concepts
Achja. Das gibt's ja auch noch (irgendwann vielleicht mal).
/me ist froh, dass "concepts" aus dem C++0x draft rausgeflogen ist und freut sich auf ein entschlacktes "concepts lite".
-
Ich nutze
`auto
nullptr,
std::function
std::unique_ptr
std::shared_ptr
`
ich habe eine Frage bezüglich std::enable_if<Bool,T>
Also wenn der Bool wahr ist, dann hat die Funktion ein Rückgabewert?
also als beispiel:
#ifndef _BEISPIEL_HPP #define _BEISPIEL_HPP #ifdef _NO_EXCEPTIONS #define _EXAMPLE_ true #else #define _EXAMPLE_ false #endif ... std::enable_if<_EXAMPLE_,DWORD>::type foo(parameters x) { //DO something if(/*ERROR*/) #ifdef _NO_EXCEPTIONS_ return 3; #else throw "You made an ERROR"; #endif return 0; // wird Ende der Funktion trotzdem ein return gemacht? } ... #endif