The standards of C++
A group created in 1985, called ISO/IEC JTC 1/SC 22
- ISO (International Organization for Standardization)
- IEC (International Electrotechnical Commission)
- JTC 1 (Joint Technical Committee 1)
- SC 22 (Subcommittee 22)
has been responsible of creating and maintaining a standard for the C++ language since 1998. Part of the reason for the longevity of this language is the existence of this group that keeps it updated by developing and publishing new revisions, adding new modern specifications, keeping it portable and compatible.
There are 5 standard revisions so far, with another one on the way for 2020
- C++98 is the name of the first published standard, where C++ is differentiated from C, the most relevant feature being that C++ is object-oriented. You can read more about it here
- C++03 fixes reported problems of C++98 and adds the ability to initialize values when a variable is constructed with an empty initializer
- C++11 (C++0x) is a major update after 8 years from the last revision that had to be part of the language and keep up with the new hardware. Multi-threading support, templates, uniform type initialization are only the top extensions of the C++ language in this version. Performance is also noticeably improved
- C++14 (C++1y) fixes bugs of the previous standard. It also adds shared mutexes and locking shared data for protecting it when accessed by multiple threads, heterogeneous lookup support for ordered associative containers and improves existing standard libraries in a few aspects
- C++17 (C++1z) removed deprecated elements from the standard library and added many new features. It also made a little bit of clean up and simplified the syntax.
- C++20 is still in the oven and will bring even more new cutting-edge features like concepts, three-way comparison, contract based programming and others that have to be approved.
Anytime you choose to install a compiler, make sure they are compatible with the standard that you want, otherwise you will get errors when trying to use features of newer revisions. Most popular compilers like MSVC, GCC, Clang are usually the ones that get updated first after a new standard is released