The Future of Generic Programming—How to design good concepts and use them well—Stroustrup

This new paper by Bjarne Stroustrup has been brewing over the holidays, and is now ready for release as a prepublication draft:

Concepts: The Future of Generic Programming
or, How to design good concepts and use them well

by Bjarne Stroustrup

From the draft paper:


Concepts complete C++ templates as originally envisioned. I don’t see them as an extension but as a completion.

Concepts are quite simple to use and define. They are surprisingly helpful in improving the quality of generic code, but their principles – and not just their language-technical details – need to be understood for effective use. In that, concepts are similar to other fundamental constructs, such as functions. Compared to unconstrained templates, there are no run-time overheads incurred by using concepts.

Concepts are carefully designed to fit into C++ and to follow C++’s design principles:

  • Provide good interfaces
  • Look for semantic coherence
  • Don’t force the user to do what a machine does better
  • Keep simple things simple
  • Zero-overhead

Don’t confuse familiarity and simplicity. Don’t confuse verbosity with “easy to understand.” Try concepts! They will dramatically improve your generic programming and make the current workarounds (e.g., traits classes) and low-level techniques (e.g., enable_if – based overloading) feel like error-prone and tedious assembly programming.

emBO++: Embedded C++ Conference in Bochum

embo.PNGA new embedded C++ conference will be held next month in Germany:

emBO++: Embedded C++ Conference

Bochum, Germany

From the announcement:

Worldwide there are more than one billion devices that could be thought of as embedded systems. All of them have been programmed at least once in their lives. While most systems still run plain old C-Code, a new generation of compilers, devices and language features encourage us to use more modern C++ in the world of embedded systems.

Modern C++ allows us to express ourselves better to the compiler and the hardware than ever before. It is our task, our responsibility and our passion to create better IT infrastructure. Out of this passion the emBO++ has been instantiated. A convention for developers, technologists and C++-enthusiasts. Come and join us, and let us influence more than a billion devices!

Const, Move and RVO—Bartlomiej Filipek

const does not prevent (N)RVO, youhou.

Const, Move and RVO

by Bartlomiej Filipek

From the article:

C++ is a surprising language. Sometimes simple things are not that simple in practice. Last time I argued that in function bodies const should be used most of the time. But two cases were missed: when moving and when returning a value.

Does const influence move and RVO?

C++17 Features—Bartlomiej Filipek

An extensive list of the future standard changes:

C++17 Features

by Bartlomiej Filipek

From the article:

In my last C++ summary (for 2016) I wrote that the draft for C++17 is the most important thing that happened. I’ve put a list of features of the new standard, and today I’d like to expand the topic so we can learn some more details.

ACCU 2017 Schedule has been published—ACCU conference committee

The schedule for the upcoming ACCU 2017 conference in Bristol, UK from 2017-04-26 to 2017-04-29 has been published.

ACCU 2017 Schedule

by ACCU conference committee

About the schedule

Again we have very strong C++ tracks this year!

Beside a closing keynote by Herb Sutter, where he wants to make a public announcement on an upcoming C++ development, there will be great C++ talks by members of the ISO C++ committee, other known C++ speakers and new faces to the C++ world.

Four full day tutorials take place the day before the conference, three with C++ content.

So don't forget to register

CppCast Episode 86: Beast with Vinnie Falco

Episode 86 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Vinnie Falco to talk about the Beast HTTP and Web Sockets library.

CppCast Episode 86: Beast with Vinnie Falco

by Rob Irving and Jason Turner

About the interviewee:

Vinnie Falco started programming on an Apple II+ in 1982. He did significant work on Canvas, an early 1990s desktop publishing program that starting on the Macintosh. A while later he wrote BearShare - a Gnutella compatible file sharing program. After that Vinnie joined up with Ripple, a company that is developing a global financial settlement network built on top of a decentralized cryptocurrency and its associated ledger. Ripple has graciously given him the opportunity to develop and publish Beast, the HTTP and WebSocket library written in C++ and used in Ripple.