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
    Lambdas

    Aber 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 Constructors

    Manchmal auch decltype und auto.
    Edit: Und std::initializer_list (sehr praktisch)


  • Mod

    So ziemlich alles, da kann man auflisten:
    - inheriting / delegating ctors

    • nullptr , 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?


  • Mod

    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, hashmaps

    Was 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
    

Anmelden zum Antworten