Skip to main content

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.

Comments

Post a Comment

Popular posts from this blog

Free Unity Game Assets -The 54 Best Websites To Download

When it comes to  Free Unity Assets,  Every indie game developer loves to hear about Websites To Download Game Assets like 3d models, Textures, Shaders, complete source etc. On various sites, you can buy your own assets like 3d models, package etc. Here we are giving you same amazing websites to download Free assets, Textures, Sounds, 3Dmodels and more,   Some websites have both free and paid you just need to do advance search for free only. WOW  BEST VR ROLLER COASTER Free Unity Assets Below are 6 must have pro and free unity assets 1.UMA – Unity Multipurpose Avatar The UMA framework is the new way to do customizable characters. Regardless if you need an npc, a hero or a villain this pack is for you! With the UMA Humanoid DNA system you got 46 tweakable values to adjust anything from height to ear rotation, giving you virtually infinite amount of customization options.  download 2.Unity-chan! model ...

Unity 2d Water fluid system, How to make it?

When I was searching to make unity 2d water fluid system and unity 2d water effect I got lots of threads on forums, blogs and everywhere. I found some good techniques and plugin that I want to share today. Today I am not giving you right answer but telling some methods and plugins you can use and tutorials you can follow to get unity 2d Water fluid system in you 2d or even 3d projects. There are many other ways like Metaballs   but metaballs are for 3d one solution is also available to make it 2d ,  and a game by PixelJunk called Shooter they use some trick and also described at GDC2010 Presentation  (PDF) unity 2d water Fluvio Plugin Test First I love to show this plugin called fluvio. I get it from asset-store what fluvio said about their plugin. "Fluvio is a solution for real-time 2D/3D fluid physics. It is fully integrated with the editor and compatible with desktop, web player and mobile platforms. Fluvio can simulate both liquids and gasses...

[SOLVED] Your Android setup is not correct. See Settings in Facebook menu

Your Android setup is not correct. See Settings in Facebook  menu.UnityEditor.HostView:OnGUI() The simple way to solve this error is installing OpenSSL. 1 - Download the OpenSSL installer (the x64 full package) here : http://slproweb.com/products/Win32OpenSSL.html (link to the file : http://slproweb.com/download/Win64OpenSSL-1_0_1f.exe ) If you are on older version of JavaSDK please update it. 2 - Download the lastest x64 JavaSDK here ( http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html).  And are you using latest facebook SDK for desired unity version? 3 - Take a look here : https://developers.facebook.com/docs/unity/downloads/?campaign_id=282184128580929&placement=SDK_list Must See: Optimizing Mobile Games in Unity Now you have everything ready to solve this error! Install OpenSSL on C:/ and open it  And add its Environment Variables in windows Path. Go to "Control Panel > System > Advanced system...