Which C++ standard should I start with?

Which C++ Standard Should I Start With

If you are just starting with C++

If you are starting to learn the C++ programming language, the choice of the C++ standard is largely irrelevant, as long as you keep at least the C++11 way of thinking in mind.

If you are starting with C++, you need to learn about the language and C++ Standard Library basics first. And the language basics are almost identical across the C++11, C++14, C++17, C++20, and C++23 standards.

Initially, focus on establishing a solid knowledge base, and then proceed to learning about a specific C++ standard.

When discussing C++ standards, what we actually mean is the notable features introduced in each of these standards. And the bottom line nowadays should be the C++11 standard. Some of the notable features of the C++11 standard are:

  • Smart pointers
  • Constexpr
  • Move semantics
  • Automatic type deduction
  • Lambda expressions
  • Other C++11 features

If you are an experienced C++98 or C++03 developer

If you are an experienced C++ developer who has worked with the C++98/03 standards in the past and would like a refresher on modern C++, then you should learn about the C++11 features in the beginning. After that, proceed to learning about C++14 and C++17 features. Everything starting with C++11 onwards is considered to be modern C++. Put your focus on the following C++11 features:

  • Smart pointers - in modern C++, we tend to stay away from raw pointers and use the std::unique_ptr instead.

  • Constexpr - in modern C++, we have a new kind of constant that is initialized during compile time. Explore the constexpr specifier.

  • Move semantics - in addition to copying data from one object of a class to another, we can now also move the data from one object to another. Explore the move constructor, the move assignment operator and, optionally, the concept of the r-value references.

  • Automatic type deduction - we can now automatically deduce the type of the object based on the type of the initializer. Explore the auto specifier.

  • Lambda expressions - explore the new kind of anonymous function objects called lambdas.They are easy-to-use clojures, especially when used as predicates in Standard Library functions.

  • Other C++11 features - explore other C++11 features such as range-based loops, initializer lists, deleted and defaulted member functions and more.

What do industries use?

Currently, mission-critical industries rely on either C++14 or C++17. Why is that? The industry seeks a fully implemented standard that has withstood the test of time and has proven to be trustworthy and stable. For example, they opt for C++14 as their baseline standard, as this standard is stable and proven, and it primarily addresses a few shortcomings of the C++11 standard. Many of them have also adopted C++17 as well.

Summary

In summary, learn the language basics first, and only then move to exploring the C++11 to C++23 features. That being said, the C++11 way of thinking should be the bottom line when programming in C++ these days.

Posted on June 24, 2025, by

Slobodan Dmitrovic

Slobodan Dmitrovic is a software development consultant, C++ trainer, and author of several books on C and C++.