Orthodox C++, a Good or Bad Idea?


From time to time, I see the term "Orthodox C++" popping up here and there. I never paid close attention to it, always relegating it to a corner of game developers or some type of embedded developers who are notorious for not learning anything new when it comes to programming languages. But recently, for no special reason, I started to think a bit more about it.

What Is Orthodox C++?

There is no exact definition of Orthodox C++. However, there is a description of Orthodox C++ available, which states:

Orthodox C++ (sometimes referred as C+) is minimal subset of C++ that improves C, but avoids all unnecessary things from so called Modern C++. It’s exactly opposite of what Modern C++ suppose to be.
— Somwhere on the internet

This definition is very loose. It’s unclear what is meant by "unnecessary things." Also, there is no exact definition of Modern {c++}, so what should be the opposite of it?

Why Orthodox C++ Could Be Interesting

Three is a famous quote from Bjarne Stroustrup, the creator of C++:

Within C++, there is a much smaller and clearer language struggling to get out.
— Bjarne Stroustrup
The Design and Evolution of C++

If for some developers Orthodox C++ is that smaller and clearer language, then so be it. For them.

Potential Problems of Orthodox C++

The problem I see is finding and defining the smaller and clearer language that is Orthodox C++. Viewpoints may vary widely. Soon, a discussion about it might leave the realm of C++ and become one of those infamous programming-religious discussions where it’s not about facts anymore but beliefs and opinions.

From this point of view, I find the name "Orthodox C++" pretty accurate. :-)

Why I Don’t Care About Orthodox C++

Having a look at some code examples from Orthodox C++ advocates, or some of the apple and banana examples that can be found on the internet, I prefer not to use that term.

I once had to work with people who told me they reject C++11 or anything newer since they do not want to have two programming languages in one project. To me, that was a very uneducated point of view.

Unfortunately, while there is some merit in the idea of Orthodox C++, I see the concept too often misused to justify not learning new things or leaving an existing comfort zone.

What I Do Care About

As so often, the golden mean might be somewhere in the middle of the two extremes.

With the upcoming C++23 standard, and not having fully explored all the features of C++20, I indeed have my definition of what I consider usable from modern C++ and what I or don’t use. At the moment and in my daily work.

But my approach is to look at features, decide if I fully understand them, and then decide if I want to use them or not.

A bit of Orthodox C++ is not a bad idea. In some aspects. Until some of them - for me, problematic or unclear - new features are more mature, well-understood, and explored. And there are always private hobby projects where it’s possible to experiment with the latest and greatest C++ features.