Skip to main content


C++ learning resources


The 'tour' is a quick (254 pages + index, historical information, etc.) tutorial overview of all of standard C++ (language and standard library) at a moderately high level for people who already know C++ or at least are experienced programmers. It covers C++20 plus a few likely features of C++23.

C++ Interactive tutorials

These two are very good beginner resources:

C++ Other learning resources

Google's Introduction to Programming and C++
This online tutorial continues with more advanced concepts - please read Part III. Our focus in this module will be on using pointers, and getting started with objects.



Codding Style

  • 2022-10-17 C++ Core Guidelines by Bjarne Stroustrup, Herb Sutter

    This is a set of core guidelines for modern C++ (currently C++20 and C++17) taking likely future enhancements and ISO Technical Specifications (TSs) into account. The aim is to help C++ programmers to write simpler, more efficient, more maintainable code.

  • 2022-10-02 Google C++ Style Guide


  • Modern C++ for C Programmers: part 1 - Bert Hubert's writings

    Welcome to part 1 of Modern C++ for C Programmers, please see the introduction for the goals and context of this series.

    In this part we start with C++ features that you can use to spice up your code ’line by line’, without immediately having to use all 1400 pages of ‘The C++ Programming Language’.

    Various code samples discussed here can be found on GitHub.

  • 2022-03-05 Beginner's Guide to Linkers

    This article is intended to help C & C++ programmers understand the essentials of what the linker does. I've explained this to a number of colleagues over the years, so I decided it was time to write it down so that it's more widely available.

  • 2022-10-16 What is Primitive Obsession and How Can we Fix it? HackerNoon

    Primitive obsession is a code smell in which primitive data types are used excessively to represent your data models. The problem with primitives is they are very general. For example, a string could represent a name, an address, or even an ID. Why is this a problem?

  • 2022-10-16 Lippincott Pattern C++

    My coworkers at the then-customer were nice and open minded people so they didn't bridle at that, on the contrary, they were eager to change it and asked for advice. I simply said that they should google for the "Lippincot Pattern" and thought the matter were settled.

Regular Expressions

Cross-platform testing

C++ Build tools

  • 2022-10-03 Ninja

    Ninja is a small build system with a focus on speed

  • 2022-10-03 Cmake

    CMake is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files

C++ profiling tools

C++ and Unicode

It's _MSC_VER. More info at MSDN and at predef.

But, be aware that some other compilers may also define it, e.g. Intel's C++ Compiler for Windows also defines _MSC_VER. If this is a concern, use #if _MSC_VER && !__INTEL_COMPILER.
_In_ UINT wCodePageID
#include <windows.h>
#include <iostream>

int main(){
std::cout << "1) ✊\n";
std::cout << "2) ✋\n";
std::cout << "3) ✌️\n";
return 0;





- 2022-11-03 Typical C++, But Why? - Björn Fahller - NDC TechTown 2022 - YouTube

some advice on writing more strongly-typed code, not only in C++