Table of Contents

I have a great news! During the last meeting in Kona, the committee not only made final notes on the C++17 standard! There’s also a groundbreaking news that behind the curtains they planned C++18!

Disclaimer/Note: this was just an April Fool’s joke! :). Please read the follow-up here!

Intro  

As it appears, the C++ Cometee finally understood that C++17 doesn’t contain the features everyone wanted. At the moment It’s impossible to change the standard - since it was already sent to the final ISO balloting… but during the last meeting in Kona (March), they decided to put all the efforts in the preparation of C++18!

C++18 will basically contain all the favourite features that programmers expected: So what we’ll get:

  • Modules!
  • Concepts
  • Ranges
  • Co-routines
  • Contracts
  • Possibly transactional memory

That’s really huge list of features!

In fact, most of the features are available in compilers already, as experimental features. So all we have to do during this year is to accept all the differences in the implementation, agree on the final scope, make the final wording… and wrap in the C++18 Standard.

Just to make it clear:

Modules  

There are already two implementations that seems to work well: one from clang and one from Microsoft.

You can play with them here: Clang, Visual Studio .

Concepts  

As we know, concepts (concepts-lite to be correct) are already available in GCC: link here.

A few days ago Gabriel Dos Reis announced - “Concepts are ready”!. See this PDF: P0606R0, Concepts Are Ready.

They are published as: ISO/IEC TS 19217:2015
Information technology – Programming languages – C++ Extensions for concepts
.

Ranges  

Containers Redesigned!

Already working implementation can be found on github, from Microsoft: link here. Works since Visual Studio 2015 update 3.

Co-routines  

Co routines in Visual Studio: link here.

Contracts  

Current proposal can be found here - P0542R0.

How to write preconditions and postconditions for functions.

Transactional memory  

It’s already published as C++ extension: ISO/IEC TS 19841:2015
Technical Specification for C++ Extensions for Transactional Memory

So we just have to merge it into C++18.

Summary  

I was really excited when I first heard that information! I’ve noticed that people complained that C++17 is not a major release and a lot of great features won’t be present. With C++18 we can fix this issue! Instead of waiting another three years (for C++20), we’ll get all the the best features in just one year from now.

  • What do you think about C++18?
  • Will the committee complete that on time?
  • What features would you like to see in C++18?