C++ Learning Resources
This document contains videos and articles about different aspects of C++ programming. The best way to learn from them is to try them out yourself, or in the case of a lecture, do private research and experiments regarding the topic.
You should not proceed to the topics after C++ STL without knowing the basics of C++ (or completing at least one series from Basics Of C++ category). The content following C++ STL isn't sorted by the difficulity, everything there is considered advanced C++. You should be able to understand most of it and apply it in your code after completing Basics Of C++ category.
This document is a collection of high quality c++ learning materials for both new and experienced c++ programmers.
Create either an issue with title and link to the resource you would like to add to this document or create new branch, add some changes and create a pull request.
Please leave your comments, thoughts and suggestions via Issues.
Beginner C++ Game Programming Tutorial Series ~ Video Tutorial Series by ChiliTomatoNoodle
C++ programming tutorial series ~ Video Tutorial Series by LearningLad
C++ advanced programming tutorial series ~ Video Tutorial Series by Bo Qian
C++ Tutorial for Beginners - Full Course ~ Video Tutorial Series by freeCodeCamp.org
STL Containers - Learn Modern C++ ~ Video Tutorial by Code Blacksmith
How to write an STL compatible container ~ Article by Vanand Gasparyan
Writing your own STL container ~ Question answer by Mooing Duck
Why does the C++ STL not provide any “tree” containers? ~ Question Answer by Martin York
Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step ~ CppCon 2017 Talk by Matt Kulukundis
Enough string_view to Hang Ourselves ~ CppCon 2018 Talk by Victor Ciura
Customizing the Standard Containers ~ CppCon 2017 Talk by Marshall Clow
Implementing static_vector: How Hard Could it Be? ~ CppCon 2021 Talk by David Stone
105 STL Algorithms in Less Than an Hour ~ ACCU 2018 Talk by Jonathan Boccara
STL Algorithms - why you should use them, and how to write your own ~ CppCon 2016 Talk by Marshall Clow
STL Algorithms in Action ~ CppCon 2016 Talk by Michael VanLoon
Writing Standard Library Compliant Data Structures and Algorithms ~ CppCon 2018 Talk by Marc Gregoire
C++17 Parallel Algorithms ~ CppCon 2017 Talk by Dietmar Kühl
Fantastic Algorithms and Where To Find Them ~ CppCon 2017 Talk by Nicholas Ormrod
tuple<>: What's New and How it Works ~ CppCon 2016 Talk by Stephan T. Lavavej
How to Write Well-Behaved Value Wrappers ~ CppCon 2018 Talk by Simon Brand
Effective replacement of dynamic polymorphism with std::variant ~ CppCon 2018 Talk by Mateusz Pusz
constexpr - Taking Constants to the Next Level ~ Video Tutorial by Code Blacksmith
constexpr: Introduction ~ CppCon 2015 Talk by Scott Schurr
constexpr: Applications ~ CppCon 2015 Talk by Scott Schurr
A <chrono> Tutorial ~ CppCon 2016 Talk by Howard Hinnant
Benchmark Timer ~ Video Tutorial by Code Blacksmith
What do you mean "thread-safe"? ~ CppCon 2018 Talk by Geoffrey Romer
Thread Synchronization Primitives ~ Video Tutorial by Code Blacksmith
Thread Pool ~ Video Tutorial by Code Blacksmith
Multithreaded Logger ~ Video Tutorial by Code Blacksmith
Memory Barriers ~ Video Tutorial by Code Blacksmith
Multithreading is the answer. What is the question? Part 1 Part 2 ~ CppCon 2017 Talk by Ansel Sermersheim
The Trap of std::async ~ Video Tutorial by Code Blacksmith
Templates in C++ ~ Video Tutorial by TheChernoProject
Variadic Templates ~ Video Tutorial by Jason Turner
Variadic Templates in C++11 / C++14 - An Introduction ~ CppCon 2015 Talk by Peter Sommerlad
Using Template Magic to Automatically Generate Hybrid CPU/GPU-Code ~ CppCon 2018 Talk by Elmar Westphal
C++ Templates Revised ~ CppCon 2017 Talk by Nicolai Josuttis
C++ Template Programming ~ Article by Jeremiah
Concepts: The Future of Generic Programming (the future is here) ~ CppCon 2018 Talk by Bjarne Stroustrup
Concepts in 60: Everything you need to know and nothing you don't ~ CppCon 2018 Talk by Andrew Sutton
Type Deduction and Why You Care ~ CppCon 2014 Talk by Scott Meyers
Type Traits - what are they and why should I use them? ~ CppCon 2015 Talk by Marshall Clow
Template Type Deduction ~ Video Tutorial by Code Blacksmith
Class Template Argument Deduction for Everyone ~ CppCon 2018 Talk by Stephan T. Lavavej
Type Punning in C++17: Avoiding Pun-defined Behavior ~ CppCon 2017 Talk by Scott Shurr
Check if type has a member method of given signature ~ Question Answer by jrok
Custom Overload Sets and Inline SFINAE for Truly Generic Interfaces ~ CppCon 2018 Talk by Vincent Reverdy
Introduction to C++ Template Metaprogramming ~ NDC Oslo 2016 Talk by Sasha Goldshtein
Modern Template Metaprogramming:A Compendium,Part 1 ~ CppCon 2014 Talk by Walter E.Brown Part 1
Modern Template Metaprogramming:A Compendium,Part 2 ~ CppCon 2014 Talk by Walter E.Brown Part 2
Modern Memory Management ~ Video Tutorial by Code Blacksmith
std::launder - what is it? ~ Video Tutorial by Code Blacksmith
Move Semantics Explained ~ Video Tutorial by Code Blacksmith
Copy and Swap ~ Video Tutorial by Code Blacksmith
“Want fast C++? Know your hardware!" ~ Lecture by Timur Doumler ( CppCon 2017 )
std::allocator Is to Allocation what std::vector Is to Vexation ~ CppCon 2015 Talk by Andrei Alexandrescu
Custom Allocator Tutorial ~ Video Tutorial by Code Blacksmith
How to Write a Custom Allocator ~ CppCon 2017 Talk by Bob Steagall
Efficient Object Pool ~ Video Tutorial by Code Blacksmith
Local ('Arena') Memory Allocators (part 1) ~ CppCon 2017 Talk by John Lakos
Local ('Arena') Memory Allocators (part 2) ~ CppCon 2017 Talk by John Lakos
C++ Exception Handling ~ Article on tutorialspoint.com
Exception Safety ~ Video Tutorial by Code Blacksmith
Custom C++ Exceptions for Beginners ~ Article by Peter Forgacs
-[Game Programming from Scratch in C++] (https://guide.handmadehero.org/) ~By Casey Muratori
C++ in Huge AAA Games ~ CppCon 2014 Talk by Nicolas Fleury
The C++ Execution Model ~ CppCon 2018 Talk by Adelstein Lelbach
Game engine using STD C++ 11 ~ CppCon 2016 Talk by Jason Jurecka
Modern User Interfaces for C++ ~ CppCon 2015 Talk by Milian Wolff
EA’s Secret Weapon: Packages and Modules ~ CppCon 2017 Talk by Scott Wardle
Naivety of Creating Cross-Platform, Modern C++ Libraries... ~ CppCon 2017 Talk by Jonathan Henson
Modern C++ API Design (part 1 of 2) ~ CppCon 2018 Talk by Titus Winters
Modern C++ API Design (part 2 of 2) ~ CppCon 2018 Talk by Titus Winters
Better Code: Human Interface ~ CppCon 2018 Talk by Sean Parent
Modern C++ Interfaces... ~ CppCon 2017 Talk by Stephen Dewhurst
Building C++ Modules ~ CppCon 2017 Talk by Boris Kolpackov
Intro to the C++ Object Model ~ CppCon 2015 Talk by Richard Powell
Design Patterns and Modern C++ ~ Video Tutorial by JetBrainsTV
Multiple Inheritance problem in C++ ~ Video Tutorial by Bo Qian
Using Functional Programming Patterns... ~ CppCon 2017 Talk by Jeremy Demeule & Quentin Duval <-
Singleton Design Pattern ~ Video Tutorial by Code Blacksmith
Strategy Design Pattern ~ Video Tutorial by Code Blacksmith
Builder Design Pattern ~ Video Tutorial by Code Blacksmith
Agent based class design ~ CppCon 2017 Talk by Odin Holmes
Design Patterns for Low-Level Real-Time Rendering ~ CppCon 2017 Talk by Nicolas Guillemot <-
Implementation of a component-based entity system in modern C++ ~ CppCon 2015 Talk By Vittorio Romeo <-
Data Driven Entity Component System in C++17 ~ Code Europe Autumn 2017 Talk K.Kisielewicz
OOP Is Dead, Long Live Data-oriented Design ~ CppCon 2018 Talk by Stoyan Nikolov
Make Classes Great Again! (Using Concepts for Customization Points) ~ CppCon 2017 Talk by Vinnie Falco
Operator Overloading: History, Principles and Practice ~ CppCom 2018 Talk by Ben Deane
How to Write Effective Documentation for C++ Libraries... ~ CppCon 2017 Talk by Robert Ramey
Dynamically Loaded Libraries Outside the Standard ~ CppCon 2021 Talk by Zhihao Yuan
Readable C++ ~ CppCon 2016 Talk by Timur Doumler <-
Building Software Capital: How to write the highest quality code and why ~ CppCon 2016 Talk by David Sankel <-
Secure Coding Best Practices: Your First Line Is The Last Line Of Defense (1 of 2) ~ CppCon 2018 Talk by Matthew Butler <-
Secure Coding Best Practices: Your First Line Is The Last Line Of Defense (2 of 2) ~ CppCon 2018 Talk by Matthew Butler <-
Applied Best Practices ~ CppCon 2018 Talk by Jason Turner <-
Practical Performance Practices ~ CppCon 2016 Talk by Jason Turner <-
Writing Good C++14... By Default ~ CppCon 2015 Talk by Herb Sutter <-
Easy to Use, Hard to Misuse: Declarative Style in C++ ~ CppCon 2018 Talk Ben Deane <-
10 Core Guidelines You Need to Start Using Now ~ CppCon 2017 Talk by Kate Gregory