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.