April 2018

Registration for CppCon 2018 is Open

The next CppCon conference is in Bellevue, Washington September 23-28.

Registration for CppCon 2018 is Open

From the announcement:

In addition to the regular conference program there will be keynotes, lightning talks, and panels. There are also pre- and post-conference classes (both two-day and one-day are offered) as well as a meeting of SG14.

ACCU 2018 trip report -- Anastasia, Timur, Phil

Anastasia Kazakova, Timur Doumler, and Phil Nash describe their experience from the recent ACCU conference in Bristol.

ACCU 2018 trip report

by Anastasia, Timur, Phil

From the report

A couple of weeks ago we traveled to Bristol for the annual ACCU Conference with our booth and 4 talks from our team (including a keynotes plenary!) in the main program. In this blog post I (Anastasia Kazakova, PMM for C++ Tools), Timur Doumler (Software Developer in the CLion team) and Phil Nash (JetBrains C++ tools Developer Advocate), would like to share our impressions and some interesting findings we had from the conference.

Affine Space Types

Well defined semantics for positions and displacements.

Affine Space Types

by Adi Shavit

From the article:

I recently came across a geometric structure that deserves to be better known: The Affine Space. In fact, like many abstract mathematical concepts, it is so fundamental that we are all subconsciously familiar with it though may have never considered its mathematical underpinnings.
This post will introduce the Affine Space structure and focus mainly on its role in the C++ type system, the standard library and for creating new strong types.

Pacific++ speaker applications open now

Do you have C++ knowledge to share? Speaker applications are now open for our October conference in Sydney, Australia.

Pacific++: Call for Talks

by PacifiC++

About the conference

We welcome applicants from all skill levels, so please do not hesitate to submit a talk!

For more information or to apply now, please visit our speaker portal: https://speaker.pacificplusplus.com/  

Italian C++ Conference 2018

A full day of C++ in Italy, June 23, 2018 / University "Bicocca", in Milan.

Italian C++ Conference 2018

Keynote Speaker:

Peter Sommerlad, Director of IFS Institute for Software


An event organized by the Italian C++ Community.

Sponsors: Bloomberg, JFrog/CONANJetBrains, Aresys, KDAB, Recognition Robotics, Sigeo


International attendees are welcome: most of the talks are in English.


In a nutshell

The Italian C++ Conference 2018 aims to be a forum for exchanging experiences using the C++ language. The event consists of 11 tech sessions and more than 3 hours of networking.


Who should attend the Italian C++ Conference 2018?

This event is made by passionate C++ professionals for C++ professionals, students and enthusiasts.


What can I find at the Italian C++ Conference 2018?

The agenda consists of 1x90-min keynote8x50-min tech talks and 2x20-min short tech talks.

More than 3 hours allocated for networking. Sponsors area.

You can refer to the detailed program for more information.


When does the Italian C++ Conference 2018 take place?

The event will be held on June 23, 2017 at the University "Bicocca", in Milan.

Check-in at 8.30 AM. The event starts at 9.30 AM and will last for a full day.


Who supports this event?

Sponsors: Bloomberg, JFrog/CONANJetBrains, Aresys, KDAB, Recognition Robotics, Sigeo

Get in touch if you want to sponsor the event


Do I need to register?

The Italian C++ Conference 2018 is free, but you must register to facilitate the organization of the event. You can register here.

Refactoring with C++17 std::optional--Bartlomiej Filipek

Isn't it better?

Refactoring with C++17 std::optional

by Bartlomiej Filipek

From the article:

There are many situations where you need to express that something is “optional” - an object that might contain a value or not. You have several options to implement such case, but with C++17 there’s probably the most helpful way: std::optional.

For today I’ve prepared one refactoring case where you can learn how to apply this new C++17 feature...

CopperSpice: C++ Tapas

New video on the CopperSpice YouTube Channel:

C++ Tapas

by Barbara Geller and Ansel Sermersheim

About the video:

This video discusses an assortment of related topics including typedefs, type aliases, namespaces, and forward declarations. We talk about how all these fundamental pieces of C++ program structure interact and how their usage and C++ idioms have changed over time.

Please take a look and remember to subscribe!

How to Reorder A Collection With the STL--Jonathan Boccara

Did you know?

How to Reorder A Collection With the STL

by Jonathan Boccara

From the article:

The STL lets you do plenty of things on collections, and one of them is to reorder the elements inside of the collection. Or, said another way, to perform a permutation on the collection.

Inded, moving elements around a collection typically takes a fair amount of complex code to write, involving for loops and iterators. And it is perhaps the area where the STL generates the most spectacular improvements, by encapsulating those complex operations behing meaningful interfaces.

Let’s see what sorts of permutations the STL offers:

  • Lexicographical permutations
  • Cyclic permutations
  • Random permutation
  • Reverse
  • Checking for permutations
  • Other permutations

Quick Q: int a[] = {1,2,}; Weird comma allowed. Any particular reason?

Quick A: For convenience.

Recently on SO:

int a[] = {1,2,}; Weird comma allowed. Any particular reason?

It makes it easier to generate source code, and also to write code which can be easily extended at a later date. Consider what's required to add an extra entry to:

int a[] = {

... you have to add the comma to the existing line and add a new line. Compare that with the case where the three already has a comma after it, where you just have to add a line. Likewise if you want to remove a line you can do so without worrying about whether it's the last line or not, and you can reorder lines without fiddling about with commas. Basically it means there's a uniformity in how you treat the lines.

Now think about generating code. Something like (pseudo-code):

output("int a[] = {");
for (int i = 0; i < items.length; i++) {
    output("%s, ", items[i]);

No need to worry about whether the current item you're writing out is the first or the last. Much simpler.