Click here to Skip to main content
13,198,322 members (54,596 online)
Click here to Skip to main content
Add your own
alternative version

Stats

17.1K views
23 bookmarked
Posted 2 Jan 2016

C++ Status at the end of 2015

, 3 Jan 2016
Rate this:
Please Sign up or sign in to vote.
Maybe I’ll be boring with this note, but again I need to write that this was another good year for C++! Read my report from 2015.

Maybe I’ll be boring with this note, but again I need to write that this was another good year for C++!
Here’s a bunch of facts:

  • Visual Studio 2015 was released with great support for C++14/17 and even more experimental features.
  • Long-awaited GCC 5.0 was released at the beginning of the year.
  • C++ gained a huge boost is popularity around July, 3rd stable place in the Tiobe Ranking
  • At CppCon 2015 there were some really important announcements made.
  • C++17 seems to be just around the corner!
  • And one sad news...

See my full report below.

  • Features
    • Missing C++11 features
    • C++14 - core language features
  • C++17
  • Core Guidelines
  • Notes on the C++ Standard
  • Compiler Notes
    • Visual Studio
    • GCC
    • Clang
    • Intel compiler
  • Conferences
  • Summary
  • What do you think?

Features

Missing C++11 features

Just for the reference Clang, GCC and Intel Compiler have full support for C++11.

  • Visual Studio:
    • Expression SFINAE - N2634
    • C99 preprocessor - N1653
  • Update: previously I've listed here 'Atomics in signal handlers' - as missing, but I skipped one note written here by StephanTLavavej - " I previously listed "Atomics in signal handlers" as No, because despite maintaining <atomic>'s implementation, I didn't know anything about signal handlers. James McNellis, our CRT maintainer, looked into this and determined that it has always worked, going back to our original implementation of <atomic> in 2012. "
    • So, all in all, this feature is working as expected since 2012.

C++14 - core language features

Clang and GCC fully implement C++14.

FeatureProposalClangGCCVSIntel
Tweak to certain C++ contextual conversionsN33233.44.912*16
Binary literalsN3472Yes4.91414
Return type deduction for normal functionsN36383.44.91415
Generalized lambda capture (init-capture)N36483.44.91415
Generic (polymorphic) lambda expressionsN36493.44.914*16
Variable templatesN36513.45--
Relaxing requirements on constexpr functionsN36523.45--
Member initializers and aggregatesN36533.45-*16
Clarifying memory allocationN36643.4n/a--
Sized deallocationN37783.45*14-
[[deprecated]] attributeN37603.44.9*14*16
Single-quotation-mark as a digit separatorN37813.44.9*14*16

Changes (from the last year version) marked with a star (*)

Visual Studio 2015: the compiler is getting closer to the full conformance, they’ve implemented Sized deallocation, [[deprecated]] attribute and Single-quotation-mark as a digit separator.

Intel has also made a good progress, they’ve added support for generic lambdas, member initializers and aggregates, [[deprecated]] attribute and Single-quotation-mark as a digit separator.

C++17

Obviously most of us are waiting for something big that should happen in relatively short period of time: C++17 should be standardized! Compilers has still some work to do on the full C++11/14 conformance, but most of the features are there for us. Most of the compiler teams actually moved into experimenting with some of the new features.

But what is C++17?

To get the best idea it’s probably best to read “Thoughts about C++17” (PDF)
by Bjarne Stroustrup. He mentioned the tree top priorities:

  • Improve support for large-scale projects
  • Add support for higher-level concurrency
  • Simplify core language use, improve STL

Moreover, C++17 is a major release, so people expect to get something important, not some little updates.

What’s on the list then?

Here is a great and detailed overview of what features might be ready for Botond’s C++17: Trip Report: C++ Standards Meeting in Kona, October 2015

Also, the features that won’t be ready will be shipped with C++20 that is planned to be a minor release. C++20 will complete C++17 as C++14 completes C++11.

Core Guidelines

At CppCon in the keynote presentation, Bjarne made an important announcement: Core guidelines!

Full guidelines can be found at github - isocpp/cppcoreguidelines, here is a quote from the introduction:

The C++ Core Guidelines are a collaborative effort led by Bjarne
Stroustrup, much like the C++ language itself. They are the result of
many person-years of discussion and design across a number of
organizations. Their design encourages general applicability and broad
adoption but they can be freely copied and modified to meet your
organization’s needs.

The aim of the guidelines is to help people to use modern C++
effectively. By “modern C++” we mean C++11 and C++14 (and soon C++17).
In other words, what would you like your code to look like in 5 years’
time, given that you can start now? In 10 years’ time?

Since the language is getting more complicated, modern, and even simplified at the same time it’s very welcomed to have a guide that will help to write good modern C++ code. Some older rules are now superseded by new approaches - for example RAII. It’s not that easy especially when you’re working on a legacy code and you’d like to add some fresh modern code into your project.
Guidelines are developed collaboratively, so it seems the rules should be practical.

The main keynote from Bjarne:

CppCon 2015: Bjarne Stroustrup “Writing Good C++14”

It was later described with working examples by Herb in his talk:

CppCon 2015: Herb Sutter "Writing Good C++14... By Default"

Notes on the C++ Standard

This year, as expected, there were two meetings: Kona in October and Lenexa in April.

The Fall meeting:

And here are the links from Spring meetings:

Next meeting are announced, it will be in Jacksonville, Florida in February. Then, there will be a very important meeting in Oulu, Finland at the end of June - important because Draft for C++17 will be voted there.

Compiler Notes

Visual Studio

GCC

Clang

Intel compiler

Conferences

This year two C++ conferences gained my attention: CppCon and MettingCpp.

CppCon

MeetingCpp

The first keynote:

Understanding Compiler Optimization - Chandler Carruth - Opening Keynote Meeting C++ 2015

And the second one:

Creating intuitive APIs - Lars Knoll - Closing Keynote Meeting C++ 2015

Books

Here are some books about C++ that appeared in 2015
Alert! Amazon links below :)

Summary

My top events for C++ in 2015:
* Core Guidelines announcement
* VS 2015 release
* Lots of experimental features available to play.

As we can see C++ Standardization Committee is working hard to bring us C++17 that really includes huge and important features. At the end of the next year we should be seeing the full C++17 draft accepted.
Developers seem to like the current atmosphere around C++ and it was reflected in the July’s Tiobe Rank, where C++ reached 8%! Maybe the term “C++ renaissance” is not a myth…

What’s even better, we have lots of experimental work already in our compilers. We can play with modules, concepts, ranges, co-routines… This might not be safe for your production code, but definitely it’s great for learning and testing this new stuff. Feedback gained from those early-staged implementation might be very valuable when the final spec is realized. And, I hope, the committee will include that feedback in their work.

VisualStudio team become more open, they’ve done huge improvements with the latest release of VS 2015. Not only you can create multiplafrotm apps (thanks to embedding Clang) but also they are quite fast with new, experimental C++ features.

All compilers implement core parts of C++11/14, so there is no excuse not to write modern C++! With the help of Core Guidelines this task should be much easier. Please add it to your new year’s resolution list! :)

The Sad News
Just a few hours after I published my original post there was a message posted from Scott Meyers on his blog: "} // good to go"... that basically says that Scott Meyers is retiring from the world of C++ ;/

See more fresh comments on this reddit thread: link here

What do you think?

  • What do you think about C++ in 2015?
  • What was the most important event/news for you?
  • Did I miss something? Let me know in comments

Thanks for comments:

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Bartlomiej Filipek
Software Developer
Poland Poland
Software developer interested in creating great code and passionate about teaching.

I have around 10 years of professional experience in C++/Windows/Visual Studio programming. Plus other technologies like: OpenGL, game development, performance optimization.

If you like my articles please subscribe to my coding blog or just visit www.bfilipek.com.

You may also be interested in...

Comments and Discussions

 
QuestionThanks Pin
Albert Holguin8-Jan-16 16:34
professionalAlbert Holguin8-Jan-16 16:34 
AnswerRe: Thanks Pin
Bartlomiej Filipek10-Jan-16 9:16
memberBartlomiej Filipek10-Jan-16 9:16 
GeneralThanks! Pin
koothkeeper4-Jan-16 6:37
professionalkoothkeeper4-Jan-16 6:37 
GeneralRe: Thanks! Pin
Bartlomiej Filipek4-Jan-16 8:02
memberBartlomiej Filipek4-Jan-16 8:02 
QuestionGPU acceleration? Pin
E. Papulovskiy2-Jan-16 20:15
memberE. Papulovskiy2-Jan-16 20:15 
AnswerRe: GPU acceleration? Pin
Bartlomiej Filipek3-Jan-16 8:02
memberBartlomiej Filipek3-Jan-16 8:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.171020.1 | Last Updated 3 Jan 2016
Article Copyright 2016 by Bartlomiej Filipek
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid