tannoy blog
c++ and concepts

There’s a new revision of the C++ programming language being defined. It includes a good number of improvements, some of which have already made their way into contemporary compilers.

Concepts were the most interesting and powerful expansion of the language that dealt with the worst linguistic problem, the consequences of template errors. They introduced a new … er … concept … providing a very powerful mechanism to define … er … concepts. Ok, ok, I’ll stop playing; concepts allowed templates to be defined according to real world properties of types.

image: leaves in winter sun

But they were dropped.

I really do think this decision to drop concepts was a grave mistake. In my opinion, as a C++ practitioner, it would have been far more sensible to delay the new specification by a year to get concepts right than to drop them and reduce the new specification to a glorified bunch of (sometimes very powerful) tweaks.

Now, let’s be straight, they were not the most important enhancement: in my view, that gold star belongs to move semantics, which can potentially significantly increase the efficiency of an already highly efficient language. Other tweaks, such as lambda functions, are, so far as I can see, glorified semantic sugar; nothing wrong with that, they’re just not that important.

Concepts introduced a new dimension of linguistic expression which none of the other enhancements do; that’s why I describe the others as tweaks. They were seminal. I was looking forward to exploring the power of concepts in new projects.

The reason why they were dropped was because they had problems, which needed additional work and more time to resolve. Had such problems occurred for a minor enhancement to the language, then I’d have supported the decision; getting the specification out within the timescale is important. But getting the specification out within the timescale by castrating it’s seminal enhancement (sorry, can’t resist the biological definitions) is a mistake. It’s like releasing a music sequencer software without music editing.

Bring back concepts!

PS Posting a C++ comment on Friday 13th is not a coincidence.