Or, in other words:
C++ is a language for defining and using light-weight abstractions.
It has significant strengths in areas where hardware must be handled effectively and there are significant complexity to cope with.
This includes many resource constrained systems and much foundational and infrastructure code.
I (Bjarne Stroustrup)
am the designer and original implementor of C++.
You can find the language, the techniques for using it, and the techniques
for implementing it described in my
in hundreds of books by others, and thousands of papers by others.
There are far too many to list.
Try a bookstore or a library.
Answers to many questions about C++ can be found in
The ISO C++ Standard:
C++ is standardized by ISO (The International Standards Organization)
in collaboration with national standards organizations, such as
ANSI (The American National Standards Institute),
BSI (The British Standards Institute), and
DIN (The German national standards organization).
The original C++ standard was issued in 1998, a minor revison in 2003, and a major update, C++11, was issued in September 2011.
After that, C++14, C++17, and C++20 were delivered according to a new ambitious 3-year schedule.
The curent standard, a major revision, was published in 2020: C++20.
holds a draft standard.
Note that this is most certainly not a tutorial.
You can get the official final version from the ISO or NIST for cash.
You are unlikely to need that unless you are a compiler implementer or a historian maintaining an archieve.
The ISO C++ standards committee (WG21) maintains an
with information about the current state of the standards effort.
"More than you ever wanted to know about the work on the C++ standard."
My view of what C++17 should be from
Note that I don't always get what I want and that I'm quite aggressive about the improvement of C++.
C++20 is pretty close to that "vision", though.
Boost.org: A repository for
libraries meant to work well with the C++ standard library.
STLab: a collection of peer-reviewed and portable C++ source libraries,
leveraging and extending both the C++ Standard Library and the Boost Libraries.
That page also contains links to Adobe open source libraries, such as the Generic Image Library
High-performance numerical libraries provide excellent tests for interesting new programming techniques:
The Object-Oriented Numerics Page
is a list of libraries, projects, and mailing lists.
ROOT from CERN.
These libraries, and many more, are available for downloading.
An old, but unfortunately not completely irrelevant, net posting
answering some unfair criticisms of C++.
I wrote this in 1994.
I had hoped that our field would mature so that uninformed flames would become rare;
I was naive.
Two talks at Budapest Technical University.
A talk by my colleague Abel Sinkovic on debugging metaprograms followed by one by me on type- and resource-safe C++.
Abel's talk should be compulsory watching for people who claim that we don't urgently need concepts.
An semi-technical talk to Churchill College Computer Society.
Churchill is my Cambridge College.
A 1994 lecture: The Design of C++ (also known as "The flying goose talk" What happend was that I was supposed to use a teleprompter, which I hated, so when it broke down a third way into the talk, I could not see the slides or any notes; I was flying blind. The last two thirds of the talk was done without props, completely from memory. When I couldn't think of what to say next, I pulled the string on the goose to gain time).
Put up by the Computer History Museum.
When I list a site it is because I found some interesting information there, not
because I wanted to endorse a product.
All the major software suppliers have C++ related information on their sites.
If you feel that I ought to add a site, feel free to tell me what and why.