C++17: Latest Features Coming To 33-Year-Old Programming Language

Nabeel
July 02, 2016
1 Comments
Home
C++17: Latest Features Coming To 33-Year-Old Programming Language



The C++17 is taken standing and putting new features to the classic programming language. This significant update is designed to create C++ an easier language to work alongside and delivers effective technical requirements.


During the latest criteria meeting in Oulu, Finland, the actual and final features list of C++ is finalised. This means that, C++17 has turned into a major release similar to C++98 and C++11.

The latest C++ 17 standards are launching new features such as structured bindings and if initialisers, creating this classic programming language “feature complete”.

The C++ community is calling C++17 the beginning of a new era designed to take robust technical specifications. The non-C++17 features will likely be revealed later as add-ons in the future releases.



Here’s the list of the highest features that were voted during the meeting:
 

Templates and Generic Code

Lambda

Attributes

Syntax cleanup

Cleaner multi-return and flow control

  • Structured bindings
    • Basically, first-class std::tie with auto
    • Example:
      • const auto [it, inserted] = map.insert( {"foo", bar} );
      • Creates variables it and inserted with deduced type from the pair that map::insert returns.
    • Works with tuple/pair-likes & std::arrays and relatively flat structs
  • if (init; condition) and switch (init; condition)
    • if (const auto [it, inserted] = map.insert( {"foo", bar} ); inserted)
    • Extends the if(decl) to cases where decl isn't convertible-to-bool sensibly
  • Generalizing range-based for loops
    • Appears to be mostly support for sentinals, or end iterators that are not the same type as begin iterators, which helps with null-terminated loops and the like.

Misc

Library additions:

Data types

Invoke stuff

  • std::invoke
    • Call any callable (function pointer, function, member pointer) with one syntax. From the standard INVOKE concept.
  • std::apply
    • Takes a function-like and a tuple, and unpacks the tuple into the call.
  • std::is_callable
  • std::make_from_tuple, std::apply applied to object construction

File System TS v1

Parallelism TS v1

  • The linked paper from 2014, may be out of date
  • Parallel versions of std algorithms, and related machinery

(parts of) Library Fundamentals TS v1 not covered above or below

Container Improvements

Other std datatype improvements:

Misc



Isocpp.org has an even more detailed list of documents, a few of which I looted for on top. Now it is not up-to-date exactly what is approved into C++17.
these slides had some features missing elsewhere.


Despite "what was eliminated" wasn't questioned, this is a short list of a few things ((mainly?) earlier deprecated) being removed in C++17 from C++:

Removed:



Spec changes:



You can check out Reddit to obtain the detailed information of the new modifications arriving with C++17.


In conclusion, C++17 is actually a major update that includes plenty of smaller features which are likely to help make this language a lot more understandable.

Comment below.

Blog authors

1 comment

  1. aflatoon
    aflatoon
    July 3, 2016 at 2:06 AM
    http://i.imgur.com/uwKTFuA.png