Trip report: the JetBrains C++ team at CppCon 2017

Posted on by

Our C++ team just returned from the main event in the C++ world, the CppCon 2017 conference in Bellevue, Washington. While our impression of this fantastic event is still fresh, we’d like to share our thoughts and findings here with you.

Talks

CppCon covers a whole range of C++ topics each year. You can learn about the language itself, from current features to the upcoming standards, the dark corners and trickiness of C++. Many strong C++ developers come to CppCon to share their personal experience in C++ customization for Game Dev, Embedded, and other areas. Libraries are also a popular session topic, as well as tools, including package managers, IDEs, tools for static and dynamic code analysis, debugging, etc.



Most keynotes are dedicated to the hottest topics or break-through changes. This year’s conference, however, started with a different talk. Bjarne Stroustrup talked about Learning and Teaching Modern C++. The talk reminded all of us of how important it is to teach and spread good practices, especially when applied to C++. Even if you are not teaching any students, you still share knowledge with your co-workers.

Herb Sutter’s keynote, Meta: Thoughts on generative C++, was an expanded version of his ACCU talk. While the ACCU talk focused mostly on the exciting introduction of the Metaclasses idea, his CppCon rendition provided more details. The proposal had been introduced to the C++ committee in July, helping Herb perfect his CppCon talk and elaborate the reasoning behind the Metaclasses, as well as a wider set of various usage examples. We also would like to thank Herb for making public the idea that since the abstractions in the language are hiders, they have to be designed in such a way that they be toolable. This will be a win-win for both parties, the language (to push the usage of abstractions forward) and the developers (to facilitate the development process with various tools).

Matt Godbolt delivered a fantastic presentation, What Has My Compiler Done for Me Lately? Unbolting the Compiler’s Lid, which was of course dedicated to Compiler Explorer.

More interestingly, it unveiled not only the history of Compiler Explorer’s creation, but presented a bunch of tricky examples which show that a) indeed compilers are smart to optimize your code in ways you may never think of, and b) reading assembly for your code could be beneficial to your development process. We’ve even ‘booked’ Matt to give us a special interview here on the CLion blog.

Google’s Titus Winters did a talk entitled C++ as a “Live at Head” Language, where he introduced Abseil, an open-source collection of C++ library code. Extensively used within Google, this collection presents an interesting idea of C++ language standard compliancy. What if you are still bound to C++11 but want to start using features incorporated into C++14, C++17, and beyond? Abseil libraries help with some forward-compatible abstractions similar to such new features.

There were dozens of other bright and extremely useful sessions in the schedule, like:

Function default arguments: Slingshot or Shotgun? by Michael Price, where he showed tricky samples with DFA. The audience tried to guess which arguments were passed to this or that function call, and quite often failed. If you are interested, find the samples on GitHub.

Diego Rodriguez-Losada Gonzalez delivered a slick and impressive presentation of Conan, one of the most promising C++ package and dependency managers.

Can you talk about C++ in verse? Tony Van Eerd did so in his talk on Postmodern C++!

Modules are likely to join the C++ standard soon. Nathan Sidwell surveyed the scene in his talk Implementing C++ Modules in G++. It seems the roadmap is still huge for G++, but it was an interesting overview of various implementation problems and questions that raised up.

The Quiet Little Gem In Modern C++: , by Charles Bay. A fascinating discussion of the highly useful, yet underused (and little-known), features of std::error_code and std::error_condition .

Our team also gave a couple of talks. Some of the recordings are already available on YouTube:

New standards to the rescue: the view through an IDE’s glasses, by Anastasia Kazakova

Tools from the C++ eco-system to save a leg, by Anastasia Kazakova

The Holy Grail – A Hash Array Mapped Trie for C++, by Phil Nash

A Composable Command Line Parser (lightning talk), by Phil Nash

Speeding up Preprocessor (lightning talk), by Ivan Sorokin

Booth

We’d like to thank everyone who dropped by our booth for a chat. We learned a lot about your experience with CLion and ReSharper C++, heard some interesting feature requests, and were very pleased with tons of positive feedback and helpful improvement suggestion. We also would like to congratulate our licenses raffle winners (the emails have already been sent) and those who solved our C++ quiz and won a CLion T-shirt featuring a cute sea lion!

By the way, our survey at the booth provided an interesting overview of the C++ ecosystem. We collected over 40 responses which show that the majority is using C++11 and C++14:

These results are similar to those we received a year ago.

In 2017, the GCC compiler is trending among the respondents, with Clang coming in second:

In 2016, GCC was also on top, but the second place was occupied by Microsoft Visual C++ compiler.

There are also CppCon trip reports from other attendees which you may find interesting.

That about wraps it up. We hope to see you at CppCon next year!