September 2018

CppCon 2018: Thoughts on a more powerful and simpler C++ (5 of N) -- Herb Sutter

cppcon2018-sutter.PNGThe CppCon 2018 Thursday plenary session is now on YouTube:

Thoughts on a more powerful and simpler C++ (5 of N)

by Herb Sutter

From the description:

Perhaps the most important thing we can do for C++ at this point in its evolution is to make sure we preserve its core strengths while also directing its evolution in ways that make it simpler to use. That is my own opinion at least, so this talk starts with a perspective question: What “is C++,” really? The language continues to evolve and change; as it does so, how can we be sure we’re picking C++ evolutionary improvements that not only don’t lose its “C++-ic” qualities, but make it a better C++ than ever?

At recent CppCons, I’ve spoken about several of my own personal C++ evolution efforts and experiments, and why I think they’re potentially important directions to explore for making C++ both more powerful and also simpler to use. The bulk of the talk is updates on two of these:

1. Lifetime and dangling: At CppCon 2015, Bjarne Stroustrup and I launched The C++ Core Guidelines in our plenary talks. In my part starting at 29:06, I gave an early look at my work on the Guidelines “Lifetime” profile, an approach for diagnosing many common cases of pointer/iterator dangling at compile time, with demos in an early MSVC-based prototype. For this year’s CppCon, I’ll cover what’s new, including:
    • use-after-move diagnoses
    • better support for the standard library out of the box without annotation
    • more complete implementations in two compilers: in MSVC as a static analysis extension, and in a Clang-based implementation that is efficient enough to run during normal compilation
    • the complete 1.0 Lifetime specification being released on the Guidelines’ GitHub repo this month

I’ll summarize the highlights but focus on what’s new, so I recommend rewatching that talk video as a refresher for background for this year’s session.

2. Metaclasses: In my CppCon 2017 talk, I gave an early look at my “metaclasses” proposal to use compile-time reflection and compile-time generation to make authoring classes both more powerful and also simpler. In this case, “simpler” means not only eliminating a lot of tedious boilerplate, but also eliminating many common sources of errors and bugs. For this year, we’ll cover what’s new, including:
    • an update on the Clang-based implementation, which now supports more use cases including function parameter lists
    • new examples, including from domains like concurrency
    • an updated P0707 paper, with more links to working examples live on Godbolt, being posted in the next few weeks for the pre-San Diego committee mailing

CppCon 2018: Simplicity: Not Just for Beginners -- Kate Gregory

cppcon2018-gregory.PNGThe CppCon 2018 Wednesday keynote is now on YouTube:

Simplicity: Not Just for Beginners

by Kate Gregory

Kate Gregory has been using C++ since before Microsoft had a C++ compiler. She writes, mentors, codes, and leads projects, in both C++ and .NET, especially for Windows. Kate is a Microsoft Regional Director, a Visual C++ MVP, has written over a dozen books, and speaks at conferences and user groups around the world. Kate develops courses on C++, Visual Studio, and Windows programming for Pluralsight.

From the description:

Many people say that simple code is better code, but fewer put it into practice. In this talk I’ll spend a little time on why simpler is better, and why we resist simplicity. Then I’ll provide some specific approaches that are likely to make your code simpler, and discuss what you need to know and do in order to consistently write simpler code and reap the benefits of that simplicity.

C++ Links - 22nd - 28th September

4th episode of the most useful C++ links smile

C++ Links #4

by Bartlomiej Filipek & Wojciech Razik

From the article:

Welcome to new C++ Links - most important and useful articles, podcasts and videos that happen between 22th and 28th of September.

This week CppCon took place - the biggest C++ conference. In today’s list, you will find the first video from there, about future of C++, you can also see a post about removing duplicate elements from associative containers and an example of really defensive programming.

CppCon 2018: Patterns and Techniques Used in the Houdini 3D Graphics Application -- Mark Elendt

cppcon2018-elendt.PNGThe CppCon 2018 Tuesday keynote is now on YouTube:

Patterns and Techniques Used in the Houdini 3D Graphics Application

by Mark Elendt, SideFX

Mark Elendt has been an active practitioner at SideFX software for over 25 years. He works primarily on low level libraries for Houdini but also is the chief author of the mantra production rendering engine. He was honored to receive the Scientific and Technical Academy Award of Merit for his contributions to Houdini.

From the description:

Earlier this year, Mark Elendt and SideFX were awarded the Scientific and Technical Award of Merit for their continued work and innovation on the Houdini Visual Effects software package.

Not only has Houdini been used in all of the Visual Effects Academy Award winning films of the past 10 years, but it has also been used for television shows like Game of Thrones and Stranger Things as well as content creation for many AAA video games, and even for scientific visualization.

Houdini artists are tasked with creating amazing, never before seen visual effects. They constantly push both performance and scale in the software. Since the early 1990's Houdini's C++ architecture has provided a flexible platform that has enabled artists from around the world to create their vision.

Mark will discuss some of the patterns and approaches that have been used in Houdini to meet the demands of production, from the early days of dealing with c-front to embracing modern features provided by modern C++.

CppCon 2018: Concepts, The Future of Generic Programming (the future is here) -- Bjarne Stroustrup

cppcon2018-stroustrup.PNGYesterday's opening keynote is now on YouTube:

Concepts: The Future of Generic Programming (the future is here)

by Bjarne Stroustrup

Note: The conference still intends to professionally caption the videos, but for the keynotes the primary goal is to get them up as quickly as possible. The automatic YouTube captions are available now and have fairly decent quality.

CppCast Episode 168: CppCon Preview with Bryce Adelstein Lelbach

Episode 168 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Bryce Adelstein Lelbach to discuss his work on the upcoming CppCon conference, his thoughts on the graphics proposal and more.

CppCast Episode 168: CppCon Preview with Bryce Adelstein Lelbach

by Rob Irving and Jason Turner

About the interviewee:

Bryce Adelstein Lelbach is a software engineer on the CUDA driver team at NVIDIA. Bryce is passionate about parallel programming. He maintains Thrust, the CUDA C++ core library. He is also one of the initial developers of the HPX C++ runtime system. He spent five years working on HPX while he was at Louisiana State University's Center for ComCppputation and Technology, and three years at Lawrence Berkeley National Laboratory (a US Department of Energy research facility) developing and analyzing new parallel programming models for exascale and post-Moore architectures. He also helped start the LLVMLinux initiative, and has occasionally contributed to the Boost C++ libraries. Bryce is an organizer for the C++Now and CppCon conferences as well as the Bay Area C++ user group, and he is passionate about C++ community development. He is a member of the ISO C++ standard committee. He worked on the C++17 parallel algorithms; today, he works on standardizing better futures, executors, and multi-dimensional arrays.

Deterministic Disappointment -- Niall Douglas

All the ways past, present and future that one can disappoint deterministically in C++.

Deterministic Disappointment

by Niall Douglas

Content of the talk:

1. What is disappointment?
2. What is determinism?
3. The direction of C++
4. Future disappointment in C++?
5. Achieving the future today
   a. C++ 11 system_error
   b. C++ 11 P1028 SG14 status_code
   c. C++ 14 (Boost.) Outcome


CLion started 2018.3 EAP by adding initial remote dev support

CLion started 2018.3 Early Access Program with one of the most awaited feature request – remote development support

Stay local, let your IDE do remote work for you!

by Anastasia Kazakova

From the article:

We’ve started with a particular set-up, though we do plan to cover and come to up with more cases in the future. So we are calling the current support state – initial:

  • Local client machine: Unix-like (macOS, Linux)
  • Remote host: Linux
  • Sources location: originally on the local host, CLion will synchronize to the remote machine for you
  • Project model: only CMake projects
  • rsync is required to be installed on a remote host


The case for Auto Non-Static Data Member Initializers -- Corentin Jabot

The case for Auto Non-Static Data Member Initializers

By Corentin Jabot


From the article:

In this article, we talk about Auto Non-Static Data Member Initializers in C++. All code snippet can be tested on Compiler Explorer thanks to Matt Godbolt.

In fact, the main motivation for this article is to put this feature in the hand of people to prove that it works and that it would be a great addition to the standard.