Articles & Books

C++ User Group Meetings in June

Lots of User Groups are meeting in June, Meeting C++ has posted an detailed overview:

C++ User Group Meetings in June 2018

by Jens Weller

From the article:

The monthly overview of upcoming C++ User Group meetings. Join a C++ User Group near you, or learn how to start your own!

There are 4 new C++ User Groups: Houston, Prague, Cluj, New York.

 

App-level Developer on std::error Exceptions Proposal for C++. Part II. The Discussion.--"No Bugs" H

Nothing is easy.

App-level Developer on std::error Exceptions Proposal for C++. Part II. The Discussion.

by "No Bugs" Hare

From the article:

For quite a long while, in certain parts of C++ community, there is a substantial resistance to existing C++ exceptions; this leads to an alternative subculture of using error codes instead of exceptions, so there are effectively two barely-compatible C++ worlds: world-using-exceptions, and world-using-error-codes...

Revisting Regular Types -- Titus Winters

An updated discussion on C++ type design, especially the overlap between Regular and reference types.

Revisiting Regular Types

By Titus Winters

From the article:

With 20 years of experience, we know that Regular type design is a good pattern - we should model user-defined types based on the syntax and semantics of built-in types where possible. However, common formulations of Regular type semantics only apply to values, and for performance reasons we commonly pass by reference in C++. In order to use such a reference as if it were its underlying Regular type we need some structural knowledge of the program to guarantee that the type isn’t being concurrently accessed. Using similar structural knowledge, we can treat some non-Regular types as if they were Regular, including reference types which don’t own their data. Under such an analysis, string_view indeed behaves as if it were Regular when applied to common usage (as a parameter). However, span does not, and further it is (currently) impossible to have shallow copy, deep compare, and Regular const semantics in the same type in C++.

This analysis provides us some basis to evaluate non-owning reference parameters types (like string_view and span) in a practical fashion, without discarding Regular design.

Automatic Object Linkage, with Include Graphs -- Thomas Young

For C++ code-bases with multiple targets and shared code elements, static libraries are kind of the default approach, but is there a better way to set this up?

Automatic Object Linkage, with Include Graphs

by Thomas Young

From the article:

In this post I describe an alternative approach to sharing source code elements between multiple build targets.

 

...

We'll need to enforce some constraints on the way the source code is set up, notably with regards to header file organisation, but can then automatically determine what to include in the link operation for each build target, based on a graph of include relationships extracted from the source files.

The resulting dynamic, fine grained, object-file centric approach to code sharing avoids the need for problematic static library decomposition, and the associated 'false dependencies'.

Transforming std::find into std::ranges::find -- Christopher Di Bella

Today, we dive into what std::find does, and how we can leverage various concepts to cleanly express its requirements, as achieved in std::ranges::find.

Transforming std::find into std::ranges::find

By Christopher Di Bella

From the article:

... The code is nearly the same, but not quite. Where it differs is in how we determine the end of the sequence, how we take the successor of our current element, and how we retrieve the value. While this is conceptually the same, it’s implementationally different.

...

Iterators are a topic rich with mathematics. Because they are part of what makes generic programming so powerful, this topic spans multiple chapters in books on generic programming.

...

we’ll now refine find to consider the EqualityComparableWith concept that we laboured over in the last article....

Hello CMake!--Arne Mertz

Do you use it?

Hello CMake!

by Arne Mertz

From the article:

Since I have mentioned CMake in a handful of past blog posts, it is time to give a short introduction for those that don’t know it yet.

CMake is one of the most popular build systems for C++ out there. One of the main reasons probably is that it is cross-platform: It does not build the project itself but operates a platform-specific system. That means it can generate Makefiles, ninja-build files, or project files for Visual Studio or Xcode, to name just a few...