Skip to content
v2025.1 Released!
Resources
Videos Screenshots Blog C/C++ plugin for SonarQube Release Notes Knowledge Base Testimonials Case Studies
Features Pricing
About Us
Contact Us Our Customers EULA
Download Free CppDepend
v2025.1 Released!
Product
Download CppDepend C/C++ plugin for SonarQube Release Notes Knowledge Base Testimonials Case Studies
Features Pricing
More
Screenshots Videos Docs Blog
Start Free Trial

Orthodox C++ fans: are they a minority or a silent majority?

Bloggers, influencers, and the C++ Standard Committee actively advocate for the use of Modern C++. Through articles, tutorials, and social media, bloggers and influencers highlight the benefits and innovative features of the latest C++ standards, aiming to educate and inspire the programming community. Their collective efforts are geared towards encouraging developers to adopt Modern C++, leveraging its advanced capabilities to write more efficient, maintainable, and robust code.

However, not all C++ developers agree with adopting Modern C++ for various reasons, leading to the emergence of the Orthodox C++ approach, which advocates for using a minimal subset of C++.

Orthodox C++, as defined by its fans

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.

To resume, Orthodox C++ fans are adopters of the C++ presented by Bjarne Stroustrap 40 years ago:

Here are some projects sample of the Orthodox C++ approach:

  • DOOM 3 BFG
  • Qt (when built with no-rtti, no-exceptions)
  • dear imgui
  • bgfx
  • TheForge
  • Oryol
  • Network Next SDK

Orthodox C++ prefered rules:

  • C-like C++ is good start, if code doesn’t require more complexity don’t add unnecessary C++ complexities. In general case code should be readable to anyone who is familiar with C language.
  • Don’t do this, the end of “design rationale” in Orthodox C++ should be immedately after “Quite simple, and it is usable. EOF“.
  • Don’t use exceptions.
  • Don’t use RTTI.
  • Don’t use C++ runtime wrapper for C runtime includes (<cstdio>, <cmath>, etc.), use C runtime instead (<stdio.h>, <math.h>, etc.)
  • Don’t use stream (<iostream>, <stringstream>, etc.), use printf style functions instead.
  • Don’t use anything from STL that allocates memory.
  • Don’t use metaprogramming excessively for academic masturbation. Use it in moderation, only where necessary, and where it reduces code complexity.

As we can see, proponents of Orthodox C++ advocate for using a minimal subset of C++, but web resources indicate that they are in the minority. Indeed, the majority supports the use of Modern C++. However, when it comes to the broader C++ developer community, the question remains: are most developers actively using modern C++ features, or do they primarily rely on basic C++ concepts?

We can’t have a precise answer to this, but it is clear that many projects still adhere to the Orthodox C++ approach due to their legacy codebases. This often prevents developers from transitioning to Modern C++, resulting in a continued emphasis on basic C++ concepts.

Author CppDepend TeamPosted on June 5, 2024June 12, 2024Tags bgfx, Bjarne Stroustrup, C++ best practices, C++ bloggers, C++ community, C++ complexity, C++ developer preferences, C++ development, C++ evolution., C++ exceptions, C++ features adoption, C++ influencers, C++ metaprogramming, C++ programming, C++ RTTI, C++ runtime, C++ Standard Committee, C++ STL, C++ streams, C-like C++, cppdepend, dear imgui, DOOM 3 BFG, efficient C++ code, Legacy Code, maintainable C++ code, minimal C++ subset, modern c++, Network Next SDK, Orthodox C++, Oryol, Qt framework, robust C++ code, TheForge

Post navigation

Previous Previous post: C++26 is coming, but what are the major features that have been added to C++ since C++11?
Next Next post: Back 60 years ago marked the rise of the ancestor of C/C++, thanks to Martin Richards.
×

Discover amazing details you never thought about your C\C++ projects.

Download CppDepend Now!
* No evaluation key required.
* Free Fully Functional Trial.

Recent Posts

  • 3 Scenarios for the Future of C++ in the Next 5 Years. Which one do you beleive in?
  • New CppDepend Major Version 2025 Helps You Keep Your C++ Code Safe and Clean with MISRA C++ 2023
  • The ‘Power Comes with Responsibility’ Mindset Delayed Safer C++ Design
  • Cpp2 for C++ serves a similar purpose as TypeScript does for JavaScript
  • Top 5 C++ Containers Libraries
  • Did the C++ Community Follow the “Bury One’s Head in the Sand” Strategy Against Safety Issues?
  • Chat with Your C++ Code: Revolutionizing Code Analysis with CppDepend AI
  • Sean Baxter and the C++ Alliance: Leading the Charge for C++ Safety
  • C++ Generic Programming: From Libraries to Core Projects
  • A Look Inside the Macchina SDK Source Code: Clean Design and Implementation.

Search this blog

Archives

  • April 2025
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • September 2023
  • March 2023
  • February 2023
  • August 2019
  • March 2019
  • October 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • November 2017
  • July 2017
  • June 2017
  • May 2017
  • November 2016
  • October 2016
  • July 2016

Discover your C\C++ project Today!

Start Free Trial

CppDepend offers a wide range of features. It is often described as a Swiss Army Knife for C and C++ developers.

Start Free Trial
Useful Links
FeaturesScreenshotsStart Free TrialDocsEULA
Our products
CPPDEPEND for C/C++C/C++ SONARQUBE PLUGINJARCHITECT FOR JAVAVBDEPEND FOR VBA/VB6
Contact Us
www.codergears.comsupport@codergears.comsales@codergears.com

2009 - 2022 © All Rights Reserved. CoderGears / CppDepend