Skip to content
Why is a raven like a writing desk?

Thoughts both confusing and enlightening.

Why is a raven like a writing desk?

Thoughts both confusing and enlightening.

Modern C++? How about Contemporary C++?

elbeno, 1 November, 20231 November, 2023

What does “modern C++” mean? Some say it started in 2001 with Andrei Alexandrescu’s book Modern C++ Design. A lot of people describe C++11 and C++14 as modern; others say, “It’s time to stop calling C++11/14 modern C++, it’s not modern anymore.”

Here’s another idea. The art world already settled this, so let’s take a cue from there.

Modern art is not really being produced today. The modern art period stretched roughly from impressionism through fauvism, cubism, etc and ended by the 1970s. Art being produced today is usually termed contemporary art. If I called Banksy’s output “modern art”, I’d just be wrong — and confusing. Note though that there is an overlap in the modern art and contemporary art periods.

(Disclaimer: I am not an artist or an art historian. I am just someone with a broad education who can use Wikipedia.)

I propose the same for C++. Modern C++, like modern art, had a relatively long period. Maybe it did start in 2001; certainly it was influenced a lot by Boost in the aughts; and it became properly recognized with C++11 and C++14. Like many things, we can only recognize the period and its roots in hindsight, so the term gains popularity only much later.

I think with C++20 and later, we are now in the contemporary C++ period. I propose roughly that the modern C++ period ended and the contemporary period started somewhere in the C++17 to C++20 years. The modern period was characterized by all the things that C++11 through C++17 brought to the language – lambdas, type support, sum types, etc, enabling more genericism. The contemporary period includes concepts in the language, ranges, and more that C++20 and beyond brought us.

It is certainly my experience that there is a large difference between working in C++20 and being limited to C++17. Another observable division here is that largely, in the modern period, C++ development was informed by folks working in Boost (lambdas, optional); in the contemporary period it is informed at least as much by independent libraries (libfmt, range-v3).

As with art, there is some overlap. Clearly ranges were in development during the modern period, just as the early modernists (e.g. Andrei, 20-25 years ago) were practising in the pre-modern era. But I would say that C++ written in 2023 (contemporary) is as different to C++ written in 2011 (modern) as C++ written in 2011 is to C++ written in 1998.

The “hump” of modern C++ was perhaps half a standard lifetime away now. It was a necessary stepping stone to contemporary C++. But it’s time to recognize what delimits a useful definition of modern C++, and to adopt a new term. We are now in the contemporary C++ period. Maybe still in the early part, but that’s what I’m going to start calling it. C++11/14 is squarely modern (it’s not time to stop calling it that); C++20 and beyond is contemporary.

Uncategorized

Post navigation

Previous post
Next post

Related Posts

Talk Like a Pirate Day

21 September, 2006

Thank $deity that's over for another year, and I missed it at work because I was on holiday. Quite apart from my dislike of the pirate meme, I think Edmund Blackadder said it best: “Yes it is” not “That it be”. You don't have to talk in that stupid voice…

Read More

Things that happened today

27 May, 2005

Went out for lunch at the Cheesecake Factory. Sat outside. Came home with a pink neck and face. Got in trouble with Mrs. Elbeno for same. Perhaps should put sunscreen in my desk drawer. Received new laptop for Mrs. Elbeno. All present and correct. Configured and updated it. Mrs. Elbeno…

Read More

Go Tim!

21 June, 2005

Henman pulls it out in a 5-set thriller. First round… the rollercoaster begins, and how! Of course the other brits are dropping like flies. Although Andrew Murray seems to be an up-and-comer. Once upon a time, we thought that about Elena Baltacha, too. Also, Justine is out 🙁

Read More
©2026 Why is a raven like a writing desk? | WordPress Theme by SuperbThemes