1.2 The Community

The C++ community is made of humans, so it is naturally composed of a lot of good things and many problems. Sometimes simultaneously. And since the language allows several paradigms and provides multiple tools, there are approximately as many programming styles than there are C++ programmers.

Two typical behaviours appeared very common to me in the recent years. The first one is about the tools provided by the standard library. First we hear people complaining: “The standard does not even contain feature. One has to use libfeature for it.” Cue to the release of the aforementioned feature, and suddenly: “The specs for feature in the standard prevent efficient implementations. One has to use libfeature for it.”

From where I stand, it looks like people’s demands are ignored, and they complain about it. Then they receive what they asked for, and they obviously still complain about it. To be fair, it is probably not the same people who complain in each situation. So I hope. Are they?

The second behaviour is about build times. C++ is well known for being the language of quite long to compile programs, especially when the program contains templates or other metaprogramming techniques. This is a topic that regularly comes out as a major pain; it was even listed as the second most frustrating thing in the 2021 Annual C++ Developer Survey [Fou21].

Despite that, once we are on the field we meet developers being like “Hey, here’s a header-only library for feature relying heavily on templates and metaprogramming stuff.” Simultaneously, we hear complaints like “Compilation times are too long! The committee should do something about that!”. And still, more developers continue asking for more header-only libraries because it is easy to integrate in a project1.

This is a problem of resource management. People have a limited computing power, and they use every drop of it to compile and recompile the same heavily template-based stuff again and again, until it becomes unbearable. At this point, instead of reviewing their work, they ask others (the committee, the standard, compiler vendors) to solve their problem. Eventually they may also even buy more computing power… only to push until using every drop of it. Doesn’t it look suspiciously like some other real-life important resource management problems?

Ah, humans…

Aside from these little problems, that are actually as much inherent to the language as they are the effect of human behaviour, there is a very large and diverse ecosystem surrounding C++. Many nice libraries and tools are published, often in a free software way, and every where we can see that people want to do their best. This is very stimulating.

1Dependency management in C++ is the main frustrating thing according to the aforementioned survey.