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.
-
C++ programming tutorial series ~ Video Tutorial Series by TheChernoProject
-
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
-
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
-
std::optional ~ Video Tutorial by Jason Turner
-
std::any ~ Video Tutorial by Jason Turner
-
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 <-
- functional: What's New, And Proper Usage ~ CppCon 2015 Talk by Stephan T. Lavavej
-
A <chrono> Tutorial ~ CppCon 2016 Talk by Howard Hinnant <-
-
Benchmark Timer ~ Video Tutorial by Code Blacksmith
- What C++ Programmers Need to Know about Header <random> ~ CppCon 2016 Talk by Walter E. Brown <-
-
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
-
C++ Alignment, Cache Line and Best Practice ~ Lecture by Professor Sheep
- GC FAQ ~ Document regarding garbage collection in C++
-
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
-
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
-
Free Your Functions! ~ CppCon 2017 Talk by Klaus Igleberger <-
-
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 <-
-
Everything You Ever Wanted to Know about DLLs ~ CppCon 2017 Talk by James McNellis <-
-
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
-
Boost C++ Libraries ~ Somewhat an extension for current C++ standard
-
GSL ~ Guidelines Support Library by Microsoft
-
Howling at the Moon: Lua for C++ Programmers ~ CppCon 2017 Talk by Andreas Weis
-
Embedding Lua in C++ ~ Video Tutorial Series by Dave Poo
-
Introduction to C++ python extensions and embedding Python in C++ Apps ~ CppCon 2016 Talk by Diego Rodriguez-Losada
- tree.hh ~ Tree Type container library for C++
-
C++ OpenGL ~ Video Tutorial Series by TheChernoProject
-
WXwidgets C++ Tutorial ~ Video Tutorial by javidx9 <-