Educational C++ Videos Educational C++ Videos Videos
- over 700 videos of talks, tutorials and explanations related to C++
- use the folding sections to explore topics hierarchically
- use the sidebar to browse topics alphabetically
Intro
by Jason Turner (C++ Weekly)
- Modern C++: What You Need to Know (2014)
- The Essence of C++ (Bjarne Stroustrup, 2014)
- Back to the Basics! Essentials of Modern C++ Style (Herb Sutter, 2014)
- Modern C++ (Michael Caisse)
- Modern C++ Coming to Terms With Terms (Jon Kalb)
- Modern C++ Design [1/2] (Titus Winters, 2018)
- Modern C++ Design [2/2] (Titus Winters, 2018)
Overview Series by Jason Turner (C++ Weekly)
Language (Types, Mechanisms, …)
- Back to Basics: Designing Classes [1/2] (Klaus Iglberger, 2021)
- Back to Basics: Designing Classes [2/2] (Klaus Iglberger, 2021)
- Back To Basics: The Special Member Functions (Klaus Iglberger, 2021)
- Back to Basics: Move Semantics (Nicolai Josuttis, 2021)
- Negative Cost Structs (C++ Weekly)
- Transparent Comparators (C++ Weekly)
- Copy Elision (CopperSpice C++)
- Copy Elision (Jon Kalb)
- C++17: Aggregate Initializations (C++ Weekly)
- C++20: Aggregates With User Defined Constructors (C++ Weekly)
- Class Type Design…
- What is Initialization (CopperSpice C++)
- The Nightmare of Initialization in C++ (Nicolai Josuttis)
- Initializer Lists Are Broken, Let's Fix Them (Jason Turner, 2018)
- Designated Initializers: Remembering Every Struct Member in Declaration Order Is Hard (Brian Ruth)
- Initialization in modern C++ (Timur Doumler, 2018)
- The Static Initialization Order Fiasco (Jonathan Müller, 2020)
- Start Using Default Member Initializers (C++ Weekly)
- C++17: Aggregate Initializations (C++ Weekly)
- C++20: Designated Initializers (C++ Weekly)
- C++20: Designated Initializers And Lambdas (C++ Weekly)
- C++20: Default Bit-field Member Initializers (C++ Weekly)
- C++20:
constinit
(C++ Weekly)
- Back to Basics: Pointers (Mike Shah, 2021)
- Rethinking Pointers (Jonathan Müller, 2018)
- Fancy Pointers for Fun and Profit (Bob Steagall, 2018)
- References To Pointers (C++ Weekly)
- Lambda To Function Pointer Conversion (C++ Weekly)
- C++20:
std::to_pointer
(C++ Weekly) std::launder
(Réka Kovács, 2017)- Strict Aliasing In The Real World (C++ Weekly)
Smart Pointers
Coroutines
- From Functions to Coroutines (Rainer Grimm, 2020)
- Converting a State Machine to a C++ 20 Coroutine (Steve Downey, 2021)
- Coroutine TS a new way of thinking (Andreas Reischuck, 2018)
- C++ Coroutines - a negative overhead abstraction (Gor Nishanov, 2015)
- Using C++20 coroutines for asynchronous parsers (Andreas Reischuck)
- Using Coroutines to Implement C++ Exceptions for Freestanding Environments (Eyal Zedaka, 2021)
- Automatically Process Your Operations in Bulk With Coroutines (Francesco Zoffoli, 2021)
- From Problem to Coroutine: Reducing I/O Latency (Cheinan Marks, 2021)
Overloading
- Overload Resolution (CopperSpice C++)
- Back To Basics: Overload Resolution (Ansel Sermersheim & Barbara Geller, 2021)
- Overloading In C and C++ (C++ Weekly)
- Understanding Operator Overloading (C++ Weekly)
- All The Assignment Operators (C++ Weekly)
- The Arrow Operator Is Magic (C++ Weekly)
- Operator Overloading: History, Principles and Practice (Ben Deane, 2018)
- Techniques for Overloading (any_invocable) (Filipp Gelman, 2021)
- Never Overload Operator
&
or||
(C++ Weekly)
Higher Order
- Lambdas For Free (C++ Weekly)
- Stateful Lambdas (C++ Weekly)
- Inheriting From Lambdas (C++ Weekly)
- Why Inherit From Lambdas? (C++ Weekly)
- Inheriting Lambdas vs. Generic Lambdas (C++ Weekly)
- Advanced Stateful Lambdas (C++ Weekly)
- Storage Duration with Lambdas (C++ Weekly)
- Overusing Lambdas (C++ Weekly)
- Lambdas as Comparators (C++ Weekly)
- Transparent Lambda Comparators (C++ Weekly)
- Lambda To Function Pointer Conversion (C++ Weekly)
- Lambdas With Destructors (C++ Weekly)
- Lambdas In Fold Expressions (C++ Weekly)
- Recursive Lambdas (C++ Weekly)
std::bind_front
Implemented With Lambdas (C++ Weekly)- const mutable Lambdas? (C++ Weekly)
- The Three Little Dots and the Big Bad Lambdas (Joel Falcou, 2017)
- Lambdas - uses and abuses (Dawid Zalewski, 2020)
- C++ IIFE in quick-bench.com (C++ Weekly)
- C++ Insights: How Stuff Works, Lambdas and More! (Andreas Fertig, 2021)
Standards
Class
by Jason Turner (C++ Weekly)
- Move Semantics, Perfect Forwarding (CopperSpice C++)
- Move Semantics Explained (Code Blacksmith)
- Back to Basics: Move Semantics [1/2] (Klaus Iglberger, 2019)
- Back to Basics: Move Semantics [2/2] (Klaus Iglberger, 2019)
- Why You Cannot Move From
const
(C++ Weekly) - Disabling Move From
const
(C++ Weekly) - Let's Move (Nicolai Josuttis, 2020)
- Modules - The Beginner's Guide (Daniela Engert, 2019)
- A (Short) Tour of C++ Modules (Daniela Engert, 2021)
- C++ Modules & Large-Scale Development (John Lakos, 2018)
- Interactive C++ in a Jupyter Notebook Using Modules for Incremental Compilation (Steven R. Brandt)
- The Rough Road Towards Upgrading to C++ Modules (Richárd Szalay, 2019)
- The three secret spices of C++ Modules (Daniela Engert)
- Modules are coming
- EA’s Secret Weapon: Packages and Modules (Scott Wardle, 2017)
- Building C++ Modules (Boris Kolpackov, 2017)
- Writing a C++20 Module (Steve Downey, 2021)
- Learning "Modern" C++ [4/5]:
const
andconstexpr
(C++ Weekly) - constexpr: Introduction (Scott Schurr, 2015)
- constexpr: Applications (Scott Schurr, 2015)
- Your New Mental Model of constexpr (Jason Turner, 2021)
- Practical constexpr (Jason Turner, 2017)
constexpr
vs.static constexpr
(C++ Weekly)- Constexpr Static Const (CopperSpice C++)
- Bringing Existing Code to CUDA Using constexpr and std::pmr (Bowie Owens, 2021)
Constexpr Everything
- The Standard Library, Microkernel, Apps, and Unit Tests (Rian Quinn, 2021)- Don't constexpr All the Things (David Sankel, 2021)
C++17
C++20
- C++20:
constexpr
virtual
Members (C++ Weekly) - C++20:
constexpr
Algorithms (C++ Weekly) - C++20:
constexpr
new
Support (C++ Weekly) - C++20: Design By Introspection (concepts + if constexpr) (C++ Weekly)
- C++20's constexpr std::vector and std::string (C++ Weekly)
- C++20: Constraining 'auto' (C++ Weekly)
- C++20: Design By Introspection (concepts + if constexpr) (C++ Weekly)
C++23
Projects
- Exceptions Demystified (Andreas Weis, 2019)
- How Compilers Reason About Exceptions (Michael Spencer, 2018)
- De-fragmenting C++: Making Exceptions and RTTI More Affordable and Usable (Herb Sutter, 2019)
- When
noexcept
Really Matters (C++ Weekly) - Exception Safety (Code Blacksmith)
- Embracing `noexcept` Operators and Specifiers Safely (John Lakos, 2021)
- C++17:
[[nodiscard]]
Attribute (C++ Weekly) - Start Using
[[nodiscard]]
! (C++ Weekly) [[nodiscard]]
Constructors And Their Uses (C++ Weekly)
- C++17:
[[fallthrough]]
Attribute (C++ Weekly) - C++17:
[[maybe_unused]]
Attribute (C++ Weekly) - C++20:
[[likely]]
and[[unlikely]]
With Practical use Case (C++ Weekly)
- C++ Undefined Behavior (CopperSpice C++)
- Back To Basics: Undefined Behavior (Ansel Sermersheim & Barbara Geller, 2021)
- Undefined Behavior is Not an Error (Barbara Geller and Ansel Sermersheim, 2018)
- Undefined Behavior and Compiler Optimizations (John Regehr, 2018)
- Garbage In, Garbage Out: Arguing about Undefined Behavior… (Chandler Carruth, 2016)
Programming Paradigms
- Data-Oriented Design and C++ (Mike Acton, 2014)
- Implementation of a component-based entity system in modern C++ (Vittorio Romeo, 2015)
- Data Driven Entity Component System in C++17 (K. Kisielewicz, 2017)
- OOP Is Dead, Long Live Data-oriented Design (Stoyan Nikolov, 2018)
- A Quantum Data Structure For Classical Computers (Charley Bay, 2018)
- High performance data structures in boost (Boris Schäling, 2018)
- Data oriented design in practice (Stoyan Nikolov, 2018)
- Inheritance (CopperSpice C++)
- Intro to the C++ Object Model (Richard Powell, 2015)
- Back to Basics: Virtual Dispatch and its Alternatives (Levi Inbal, 2019)
- Virtual Inheritance: Probably Not What You Think It Is (C++ Weekly)
- Covarient Return Types And Covariant Smart Pointers (C++ Weekly)
- Multiple Inheritance problem in C++ (Bo Qian)
- C++ Tapas (
typename
,virtual
,pure virtual
) (CopperSpice C++) - Back to Basics: Object-Oriented Programming (Rainer Grimm, 2021)
- OO Considered Harmful (Phil Nash, 2020)
- Value-oriented Design in an Object-oriented System (Juan Pedro Bolivar Puente, 2021)
- Design Patterns and Modern C++ (JetBrains)
- Singleton Design Pattern (Code Blacksmith)
- Strategy Design Pattern (Code Blacksmith)
- Builder Design Pattern (Code Blacksmith)
- Design Patterns - Facts and Misconceptions (Klaus Iglberger)
- Statistical scientific programming OO patterns: accumulators (Olivia Quinet, 2017)
- Design Patterns - Facts and Misconceptions (Klaus Iglberger)
- The Factory Pattern (Mike Shah, 2021)
- Effective replacement of dynamic polymorphism with std::variant (Mateusz Pusz, 2018)
std::variant
and the power of pattern matching (Nikolai Wuttke, 2018)std::variant
(CopperSpice C++)std::visit
(CopperSpice C++)- The Many Variants of std::variant (Nevin Liber, 2019)
- Variations on variants (Roi Barkan, 2021)
- Matchine: Pattern Matching for Open Sum Types (André Bergner, 2019)
Basics
- Modern C++ Threads (CopperSpice C++)
- Multithreading in C++ (CopperSpice C++)
- C++ Memory Model (CopperSpice C++)
- Memory Model to Mutexes (CopperSpice C++)
- Atomics (CopperSpice C++)
- The Foundation of C++ Atomics: The Knowledge You Need to Correctly Use C++ Atomics (Filipe Mulonde, 2021)
- Futures & Promises (CopperSpice C++)
- C++ Standard Parallelism (Bryce Adelstein Lelbach, 2021)
- C++17 Parallel Algorithms (Dietmar Kühl, 2017)
- N Times Faster Code With Parallel Algorithms (C++ Weekly)
- Back to Basics: Concurrency (Arthur O'Dwyer, 2020)
- Back to Basics: Concurrency (Mike Shah, 2021)
- Multithreading 101: Concurrency Primitives From Scratch ( Arvid Gerstmann, 2019)
- Thread Safety (CopperSpice C++)
- What do you mean "thread-safe"? (Geoffrey Romer, 2018)
- Multithreading is the answer. What is the question? [1/2] (Ansel Sermersheim, 2017)
- Multithreading is the answer. What is the question? [2/2] (Ansel Sermersheim, 2017)
- Multithreading using libGuarded (CopperSpice C++)
- Mutex + Lock = CsLibGuarded (CopperSpice C++)
- Lock-Free Programming (or, Juggling Razor Blades) (Herb Sutter, 2014)
- Reader-Writer Lock versus Mutex (Jeffrey Mendelsohn, 2017)
- The Continuing Saga of the Lock-free Queue [3/N] (Tony Van Eerd, 2018)
- A Multithreaded,Transaction-Based Locking Strategy for Containers (Bob Steagall, 2019)
- Designing Concurrent C++ Applications (Lucian Radu Teodorescu, 2021)
- From Algorithm to Generic, Parallel Code (Kuhl Dietmar, 2019)
- Best Practices for Concurrency (Rainer Grimm, 2018)
- Concurrency Patterns (Rainer Grimm, 2021)
- The CUDA C++ Standard Library (Bryce Lelbach)
- Parallel STL for CPU and GPU -- The Future of Heterogeneous/Distributed C++ (Michael Wong and Gordon Brown, 2017)
- cudaFlow: Modern C++ Programming Model for GPU Task Graph Parallelism (D.-L.Lin, T.-W.Huang 2021)
- A Modern C++ Programming Model for GPUs using Khronos SYCL (Gordon Brown, 2018)
- GPU Accelerated Computing on Cross-Vendor Graphics Cards with Vulkan Kompute (Alejandro Saucedo, 2021)
- Debugging Assembly Language and GPU Kernels in Visual Studio Code (Julia Reid, 2021)
- Using Template Magic to Automatically Generate Hybrid CPU/GPU-Code (Elmar Westphal, 2018)
- Back to Basics: Templates [1/2] (Bob Steagall, 2021)
- Back to Basics: Templates [2/2] (Bob Steagall, 2021)
- Variable Templates (CopperSpice C++)
- C++14: Variable Templates (C++ Weekly)
- C++17: Class Template Argument Type Deduction (CTAD) (C++ Weekly)
- C++17: Surprising Conversions with CTAD (C++ Weekly)
- C++20: Template Syntax For Lambdas (C++ Weekly)
- C++20: Templates - The next level: Concepts and more (Andreas Fertig, 2021)
- Using Template Magic to Automatically Generate Hybrid CPU/GPU-Code (Elmar Westphal, 2018)
- C++ Templates Revised (Nicolai Josuttis, 2017)
- Templates in The Real World (CopperSpice C++)
- Reducing Template Compilation Overhead, Using C++11, 14, 17, and 20. (Brown Jorg, 2019)
- Optimizing Generic Algorithms (Denis Yaroshevskiy, 2019)
- Paradigms, Polymorphism, and Generic Programming (CopperSpice C++)
- A generic binary tree: why grow your own? (Jeremy Murphy, 2019)
- Inheriting Lambdas vs. Generic Lambdas (C++ Weekly)
- Understanding 'auto' (C++ Weekly)
- Quick Perf. Tip: Prefer 'auto' (C++ Weekly)
- Constraining 'auto' in C++20 (C++ Weekly)
- Type Traits (CopperSpice C++)
- Type Traits - what are they and why should I use them? (Marshall Clow, 2015)
- Type Punning in C++17: Avoiding Pun-defined Behavior (Scott Shurr, 2017)
- Concepts vs Typeclasses vs Traits vs Protocols (Conor Hoekstra, 2020)
- The Best Type Traits that C++ Doesn't Have (Arthur O'Dwyer, 2018)
- Template Metaprogramming: Type Traits [1/2] (Jody Hagins, 2020)
- Template Metaprogramming: Type Traits [2/2] (Jody Hagins, 2020)
- Concepts in C++20 (CopperSpice C++)
- C++20: What is
requires requires
? (C++ Weekly) - The Concepts of concepts (Sandor Dargo, 2021)
- Using Concepts: C++ Design in a Concept World [1/2] (Jeff Garland, 2021)
- Using Concepts: C++ Design in a Concept World [2/2] (Jeff Garland, 2021)
- Concepts - Evolution or Revolution (Rainer Grimm, 2019)
- So You Think You Know How to Work With Concepts? (Andrzej Krzemieński, 2021)
- Concepts driven design (Kris Jusiak, 2017)
- Concepts vs Typeclasses vs Traits vs Protocols (Conor Hoekstra, 2020)
- Concepts: The Future of Generic Programming (the future is here) (Bjarne Stroustrup, 2018)
- Concepts in 60: Everything you need to know and nothing you don't (Andrew Sutton, 2018)
- Make Classes Great Again! (Using Concepts for Customization Points) (Vinnie Falco, 2017)
constexpr
- Introduction to C++ Template Metaprogramming (Sasha Goldshtein, 2016)
- An inspiring introduction into Template Meta Programming (Milosz Warzecha, 2017)
- Template Metaprogramming: Practical Application (Jody Hagins, 2021)
- Modern Template Techniques (Jon Kalb, 2019)
- Template Metaprogramming: Type Traits [1/2] (Jody Hagins, 2020)
- Template Metaprogramming: Type Traits [2/2] (Jody Hagins, 2020)
- Custom Overload Sets and Inline SFINAE for Truly Generic Interfaces (Vincent Reverdy, 2018)
- Boost.TMP: Your DSL for Metaprogramming (Odin Holmes, 2018)
- Template Shenanigans (Jonathan O'Connor , 2020)
- Taking Template Classes Further with Opaque Types & Generic NTTPs (Joel Falcou & Vincent Reverdy)
- Semantic Sugar: Tips for Effective Template Library APIs (Roi Barkan, 2021)
- Reducing Template Compilation Overhead, Using C++11, 14, 17, and 20. (Brown Jorg, 2019)
- Practical TMP: A C++17 Compile Time Register Machine (Daniel Nikpayuk, 2021)
- A new look at TMP (Ivan Cukic, 2018)
- Alices adventures in Template Land (Jonathan O'Connor, 2018)
Projects
Design (Guidelines, Interfaces,…)
- The Most Important Design Guideline (Scott Meyers)
- The Worst Best Practices (Jason Turner, 2021)
- Better Code: Relationships (Sean Parent, 2019)
- C++ Seasoning (Sean Parent, 2013)
- Simplicity: Not Just For Beginners (Kate Gregory, 2018)
- Modern C++ Design [1/2] (Titus Winters, 2018)
- Modern C++ Design [2/2] (Titus Winters, 2018)
- Make Simple Tasks Simple! (Bjarne Stroustrup, 2014)
- Applied Best Practices (Jason Turner, 2018)
- Practical Performance Practices (Jason Turner, 2016)
- The Optimal Way To Return From A Function (C++ Weekly)
- The Best Possible Way To Create A Visitor? (C++ Weekly)
- Discovering Warnings You Should Be Using (C++ Weekly)
- Quick Perf. Tip: Prefer 'auto' (C++ Weekly)
- Using Lippincott Functions (C++ Weekly)
- One Simple Trick For Reducing Code Bloat (C++ Weekly)
- Top 4 Places To Never Use 'const' (C++ Weekly)
- Start Using Raw String Literals (C++ Weekly)
- Start Using Default Member Initializers (C++ Weekly)
- Start Using
[[nodiscard]]
(C++ Weekly) - Start Using
as_const
(C++ Weekly)
- Readable C++ (Timur Doumler)
- Easy to Use, Hard to Misuse: Declarative Style in C++ (Ben Deane, 2018)
- 10 Core Guidelines You Need to Start Using Now (Kate Gregory, 2017)
- Readable C++ (Timur Doumler, 2016)
- Building Software Capital: How to write the highest quality code and why (David Sankel, 2016)
- Writing Good C++14 (Bjarne Stroustrup, 2015)
- Writing Good C++14… By Default (Herb Sutter, 2015)
- Curiously Recurring C++ Bugs at Facebook (Louis Brandy)
- unsigned: A Guideline for Better Code (Jon Kalb)
- Best Practices for Concurrency (Rainer Grimm, 2018)
- Modern C++ API Design [1/2] (Titus Winters, 2018)
- Modern C++ API Design [2/2] (Titus Winters, 2018)
- Modern C++ Interfaces… (Stephen Dewhurst, 2017)
- The most important API design principle (Marc Mutz, 2017)
- Game Engine API Design (Allan Deutsch, 2018)
- Modern C++ API Design: From Rvalue-References to Type Design (Titus Winters, 2018)
- Returning
void
(C++ Weekly) - Better Code: Human Interface (Sean Parent, 2018)
- Surprise Uses For
explicit
Constructors (C++ Weekly) - Using
explicit
to Find Expensive Accidental Copies (C++ Weekly)
- Back to Basics: Designing Classes [1/2] (Klaus Iglberger, 2021)
- Back to Basics: Designing Classes [2/2] (Klaus Iglberger, 2021)
- Back To Basics: The Special Member Functions (Klaus Iglberger, 2021)
- Back to Basics: Move Semantics (Nicolai Josuttis, 2021)
- The Power of
=delete
(C++ Weekly) - Surprise Uses For
explicit
Constructors (C++ Weekly) - Using
explicit
to Find Expensive Accidental Copies (C++ Weekly)
- Regular Types and why do I care? (Victor Ciura, 2018)
- Strong types for strong interfaces (Jonathan Boccara, 2017)
- Engineering Software Integral Types (Andrei Zlate-Podani, 2018)
- Sane and Safe C++ Class Types (Peter Sommerlad, 2019)
- What Classes We Design and How (Peter Sommerlad, 2021)
- Classes With Many Fields ( Stanisław J. Dobrowolski, 2021)
- Negative Cost Structs (C++ Weekly)
- C++ in Huge AAA Games (Nicolas Fleury, 2014)
- The C++ Execution Model (Adelstein Lelbach, 2018)
- Game engine using STD C++ 11 (Jason Jurecka, 2016)
- Modern User Interfaces for C++ (Milian Wolff, 2015)
- Naivety of Creating Cross-Platform, Modern C++ Libraries… (Jonathan Henson, 2017)
- EA’s Secret Weapon: Packages and Modules (Scott Wardle, 2017)
- Building C++ Modules (Boris Kolpackov, 2017)
ISO
- Modern C++: What You Need to Know (2014)
- The Essence of C++ (Bjarne Stroustrup, 2014)
- Back to the Basics! Essentials of Modern C++ Style (Herb Sutter, 2014)
- Modern C++ (Michael Caisse)
- Modern C++ Coming to Terms With Terms (Jon Kalb)
- Modern C++ Design [1/2] (Titus Winters, 2018)
- Modern C++ Design [2/2] (Titus Winters, 2018)
Overview Series by Jason Turner (C++ Weekly)
by Jason Turner (C++ Weekly)
std::next
andstd::exchange
(C++ Weekly)std::exchange
vs.std::swap
(C++ Weekly)std::quoted
(C++ Weekly)
- C++17: The Important Parts in 10 Minutes (C++ Weekly)
- C++17: Removed Language Features (C++ Weekly)
- C++17 Features [1/2] (Bryce Lelbach, 2017)
- C++17 Features [2/2] (Bryce Lelbach, 2017)
- Moving to C++17 (CopperSpice C++)
- More about Moving to C++17 (CopperSpice C++)
- Practical C++17 (Jason Turner, 2017)
- The C++17 Parallel Algorithms Library and Beyond (Bryce Lelbach, 2016)
- Beyond C++17 [1] (Mateusz Pusz, 2018)
- Beyond C++17 [2] (Mateusz Pusz, 2019)
- Combining C++17 Features (Nicolai Josuttis, 2019)
- Practical C++17 (Jason Turner, 2017)
- Rich Code for Tiny Computers: A Simple Commodore 64 Game in C++17 (Jason Turner, 2016)
- Practical TMP: A C++17 Compile Time Register Machine (Daniel Nikpayuk, 2021)
Language
- C++17:
if
andswitch
Init Statements (C++ Weekly) - C++17: Structured Bindings (C++ Weekly)
- C++17:
inline
Variables (C++ Weekly) - C++17: Aggregate Initializations (C++ Weekly)
- C++17: CTAD: Class Template Argument Type Deduction (C++ Weekly)
- C++17: CTAD: Deduction Guides (C++ Weekly)
- C++17: Variadic
using
(C++ Weekly) - C++17: Nested Namespaces and
std::clamp
(C++ Weekly) - C++17:
__has_include
(C++ Weekly) - C++17: Hidden Parts [1/2] (C++ Weekly)
- C++17: Hidden Parts [2/2] (C++ Weekly)
Compile Time
Attributes
- C++17: Changes To Sequence Containers (C++ Weekly)
- C++17:
std::string_view
(C++ Weekly) - Enough
string_view
to Hang Ourselves (Victor Ciura, 2018) - C++17:
std::optional
(C++ Weekly) - C++17:
std::gcd
andstd::lcm
(C++ Weekly) - C++17:
std::any
(C++ Weekly) - C++17:
std::invoke
(C++ Weekly) - C++17: Searchers (C++ Weekly)
- C++17:
any
,optional
(CopperSpice C++) - C++17: Nested Namespaces and
std::clamp
(C++ Weekly) - C++17:
std::map
vs. constexpr map (huge perf difference!) (C++ Weekly)
- C++20 in Breadth (Alisdair Meredith, 2019)
- C++20: The Small Things (Timur Doumler, 2019)
- The C++20 Firehose Talk (Fabio Fracassi, 2019)
- C++20: C++ at 40 (Stroustrup Bjarne, 2019)
- C++20:
operator <=>
(C++ Weekly) - C++20:
for
init-statements (C++ Weekly) - C++20: Designated Initializers (C++ Weekly)
- C++20: Default Bit-field Member Initializers (C++ Weekly)
- C++20: Aggregates With User Defined Constructors (C++ Weekly)
- C++20: Conditionally
explicit
Conversions (C++ Weekly) - C++20:
using enum
(C++ Weekly) - C++20:
[[likely]]
and[[unlikely]]
With Practical use Case (C++ Weekly) - C++20: Multiple Destructors?! How and Why (C++ Weekly)
- C++20: Why Deprecate The Comma Operator? (C++ Weekly)
- Better CTAD for C++20 (Timur Doumler, 2019)
- Universal Function Call Syntax in C++20 (Devon Richards, 2021)
Lambdas
Compile Time
- Concepts in C++20 (CopperSpice C++)
- C++20's constexpr std::vector and std::string (C++ Weekly)
- C++20:
constexpr
virtual
Members (C++ Weekly) - C++20:
constexpr
Algorithms (C++ Weekly) - C++20:
constexpr
new
Support (C++ Weekly) - C++20: New
consteval
Keyword (C++ Weekly) - C++20:
is_constant_evaluated()
(C++ Weekly) - C++20: Design By Introspection (concepts + if constexpr) (C++ Weekly)
- C++20: From SFINAE To Concepts (C++ Weekly)
- C++20:
constinit
(C++ Weekly) - Policy-based design in C++20 (Goran Arandjelović, 2018)
- C++20: Uniform Container Erasure (C++ Weekly)
- C++20:
std::string
starts_with
andends_with
(C++ Weekly) - C++20:
std::shift_left
andstd::shift_right
(C++ Weekly) - C++20:
std::bit_cast
(C++ Weekly) - C++20:
std::to_array
(C++ Weekly) - C++20:
std::source_location
(C++ Weekly) - C++20:
std::to_pointer
(C++ Weekly) - C++20:
std::bind_front
(C++ Weekly) - C++20:
lerp
,midpoint
And Why They Are Necessary (C++ Weekly) - C++20:
contains
Members (C++ Weekly) - C++20:
jthread
andstop_token
(C++ Weekly) - C++20: Safe Integer Comparisons (C++ Weekly)
- C++20: Bit Manipulation Functions (C++ Weekly)
- C++20: (High Precision) Mathematical Constants (C++ Weekly)
- The C++20 Synchronization Library (Bryce Lelbach, 2019)
- C++20: chrono Calendars and Time Zones in MSVC (Miya Natsuhara, 2021)
Coroutines
- From Functions to Coroutines (Rainer Grimm, 2020)
- Converting a State Machine to a C++ 20 Coroutine (Steve Downey, 2021)
- Coroutine TS a new way of thinking (Andreas Reischuck, 2018)
- C++ Coroutines - a negative overhead abstraction (Gor Nishanov, 2015)
- Using C++20 coroutines for asynchronous parsers (Andreas Reischuck)
- Automatically Process Your Operations in Bulk With Coroutines (Francesco Zoffoli, 2021)
- From Problem to Coroutine: Reducing I/O Latency (Cheinan Marks, 2021)
- Using Coroutines to Implement C++ Exceptions for Freestanding Environments (Eyal Zedaka, 2021)
Projects
- Using C++20 coroutines for asynchronous parsers (Andreas Reischuck)
- How C++20 changes the way we write code (Timur Doumler, 2020)
- C++ Insights - How stuff works, C++20 and more! (Andreas Fertig)
- Writing a C++20 Module (Steve Downey, 2021)
- UT - C++20 Unit Testing Framework (Kris Jusiak, 2021)
An RPG in C++20
- Understanding
emplace_back
(C++ Weekly) emplace_back
vs.push_back
(C++ Weekly)std::map[]
vs.std::map.at()
(C++ Weekly)- Custom Comparators for Containers (C++ Weekly)
std::string
's 11 confusing constructors (C++ Weekly)string.clear()
8vs.string = ""
(C++ Weekly)std::string
starts_with
andends_with
(C++ Weekly)
- PMR: 3.5x Faster Standard Containers! (C++ Weekly)
- PMR: Amazing, Fast, But, Not Quite Magic (C++ Weekly)
- test_resource: the pmr detective (Attila Fehér, 2019)
- 105 STL Algorithms in Less Than an Hour (Jonathan Boccara, 2018)
- Writing Standard Library Compliant Data Structures and Algorithms (Marc Gregoire, 2018)
- Fantastic Algorithms and Where To Find Them (Nicholas Ormrod, 2017)
- STL Algorithms in Action (Michael VanLoon, 2016)
- STL Algorithms - why you should use them, and how to write your own (Marshall Clow, 2016)
- Algorithm Mnemonics: Increase your Productivity with STL Algorithms (Tommy Bennett)
- C++ Seasoning (Sean Parent, 2013)
- STL Algorithms as Expressions (Oleksandr Bacherikov, 2021)
Specific
- An Overview of Standard Ranges (Tristan Brindle, 2019)
- Conquering C++20 Ranges (Tristan Brindle, 2021)
- From STL to Ranges: Using Ranges Effectively (Garland Jeff, 2019)
- Range Algorithms, Views and Actions - A Comprehensive Guide (Yitzchaki Dvir, 2019)
- Using C++20 Ranges Effectively (Jeff Garland, 2019)
- Some Programming Myths Revisited (Roy Patrice, 2019)
- C++ Concepts and Ranges (Mateusz Pusz, 2018)
- The C++20 Standard Library - Beyond Ranges (Jeff Garland, 2019)
- Iterators and Ranges: Comparing C++ to D to Rust (Barry Revzin, 2021)
- Better C++ Ranges (Arno Schödl, 2021)
- Range-based text formatting (Arno Schödl, 2018)
- Documentation in the Era of Concepts and Ranges (Christopher Di Bella & Sy Brand, 2021)
Video Series by Conor Hoekstra
- C++ Iterators
- Minimum & Maximum Algorithms
- count, count_if and more
- reverse, rotate
- generate & generate_n
- accumulate, reduce
- unique & unique_copy
- partial_sum, iota
- adjacent_find
- sort, stable_sort
- next_permutation, prev_permutation
- partition, stable_partition and more
- remove_if and more
- set_union, set_difference, set_…
- binary_search, lower_bound, upper_bound
Range Views
- Range Algorithms, Views and Actions - A Comprehensive Guide (Yitzchaki Dvir, 2019)
- What a View! Building Your Own (Lazy) Range Adaptors [1/2] (Di Bella Chris, 2019)
- What a View! Building Your Own (Lazy) Range Adaptors [2/2] (Di Bella Chris, 2019)
- Custom Views for the Rest of Us (Jacob Rice, 2021)
- A View to a View (Peter Bindels, 2018)
Range Algorithms
- An Overview of Standard Ranges (Tristan Brindle, 2019)
- Conquering C++20 Ranges (Tristan Brindle, 2021)
- From STL to Ranges: Using Ranges Effectively (Garland Jeff, 2019)
- Range Algorithms, Views and Actions - A Comprehensive Guide (Yitzchaki Dvir, 2019)
- Using C++20 Ranges Effectively (Jeff Garland, 2019)
- Some Programming Myths Revisited (Roy Patrice, 2019)
- C++ Concepts and Ranges (Mateusz Pusz, 2018)
- The C++20 Standard Library - Beyond Ranges (Jeff Garland, 2019)
- Iterators and Ranges: Comparing C++ to D to Rust (Barry Revzin, 2021)
- Better C++ Ranges (Arno Schödl, 2021)
- Range-based text formatting (Arno Schödl, 2018)
- Documentation in the Era of Concepts and Ranges (Christopher Di Bella & Sy Brand, 2021)
std::variant
std::variant
(CopperSpice C++)std::variant
and the power of pattern matching (Nikolai Wuttke, 2018)- Variations on variants (Roi Barkan, 2021)
- The Many Variants of std::variant (Nevin Liber, 2019)
std::visit
(CopperSpice C++)- Effective replacement of dynamic polymorphism with std::variant (Mateusz Pusz, 2018)
- Creating Allocator-Aware Types (C++ Weekly)
- std::allocator Is to Allocation what std::vector Is to Vexation (Andrei Alexandrescu, 2015)
- Custom Allocator Tutorial (Code Blacksmith)
- How to Write a Custom Allocator (Bob Steagall, 2017)
- Frictionless Allocators (Alisdair Meredith, 2021)
- Efficient Object Pool (Code Blacksmith)
- Local ('Arena') Memory Allocators [1/2] (John Lakos, 2017)
- Local ('Arena') Memory Allocators [2/2] (John Lakos, 2017)
- Value Proposition: Allocator-Aware (AA) Software (John Lakos, 2019)
std::allocator
(Andrei Alexandrescu, 2015)- An Allocator is a Handle to a Heap (Arthur O'Dwyer, 2018)
Performance
- Speed Is Found In The Minds of People (Alexandrescu Andrei, 2019)
- Back to Basics: Virtual Dispatch and its Alternatives (Levi Inbal, 2019)
- Great C++ is_trivial (Turner Jason, 2019)
- Path Tracing Three Ways: A Study of C++ Style (Godbolt Matt, 2019)
- This Videogame Programmer Used the STL and You Will Never Guess What Happened Next (Ropert Mathieu, 2019)
- Reducing Template Compilation Overhead, Using C++11, 14, 17, and 20. (Brown Jorg, 2019)
- Optimizing Generic Algorithms (Denis Yaroshevskiy, 2019)
- Real-time Programming with the C++ Standard Library (Timur Doumler, 2021)
- Branchless Programming in C++ (Fedor Pikus, 2021)
- Is C++ really a high performance language? (Gábor Horváth, 2017)
- The Blaze High Performance Math Library (Klaus Iglberger, 2016)
- The Performance Price of Dynamic Memory in C++ (Ivica Bogosavljevic, 2021)
- The performance Addict's Toolbox (Peter Steinbach, 2017)
- Hey C, This Is What Performance Looks like (Odin Holmes, 2019)
- High Performance Code 201: Hybrid Data Structures (Chandler Carruth, 2016)
- You Can Do Better than
std::unordered_map
: New Improvements to Hash Table Performance (2018) - Getting The Most Out Of Your CPU (C++ Weekly)
Algorithms
- Speed Is Found In The Minds of People (Alexandrescu Andrei, 2019)
- This Videogame Programmer Used the STL and You Will Never Guess What Happened Next (Ropert Mathieu, 2019)
- Path Tracing Three Ways: A Study of C++ Style (Godbolt Matt, 2019)
- Algorithm Intuition (Conor Hoekstra, 2019)
- Algorithms and Iterators for Multidimensional Arrays (Cem Bassoy, 2017)
- Efficiency with Algorithms, Performance with Data Structures (Chandler Carruth, 2014)
- Fantastic Algorithms and Where To Find Them (Nicholas Ormrod, 2017)
- Algorithms from a Compiler Developer's Toolbox (Gábor Horváth, 2021)
- A Guide to Maps (CopperSpice C++)
- Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step (Matt Kulukundis, 2017)
- Why You Should Avoid Linked Lists (Bjarne Stroustrup)
- You Can Do Better than
std::unordered_map
: New Improvements to Hash Table Performance (2018) - High Performance Code 201: Hybrid Data Structures (Chandler Carruth, 2016)
- High performance data structures in boost (Boris Schäling, 2018)
Memory
Memory
- Creating Allocator-Aware Types (C++ Weekly)
- std::allocator Is to Allocation what std::vector Is to Vexation (Andrei Alexandrescu, 2015)
- Custom Allocator Tutorial (Code Blacksmith)
- How to Write a Custom Allocator (Bob Steagall, 2017)
- Frictionless Allocators (Alisdair Meredith, 2021)
- Efficient Object Pool (Code Blacksmith)
- Local ('Arena') Memory Allocators [1/2] (John Lakos, 2017)
- Local ('Arena') Memory Allocators [2/2] (John Lakos, 2017)
- Value Proposition: Allocator-Aware (AA) Software (John Lakos, 2019)
std::allocator
(Andrei Alexandrescu, 2015)- An Allocator is a Handle to a Heap (Arthur O'Dwyer, 2018)
Hardware
- Modern C++ in Embedded Systems (Michael Caisse, 2018)
- Embedded & C++ (Wouter van Ooijen, 2017)
- C++ to the RISCue! A Practical Guide for Embedded C++20 (Kris Jusiak, 2021)
- De-fragmenting C++: Making Exceptions and RTTI More Affordable and Usable (Herb Sutter, 2019)
- Embedded Domain Specific Languages for Embedded Bare Metal Projects (Michael Caisse, 2019)
- Support for Embedded Programming in C++11 and C++14 (Scott Meyers, 2014)
- Code Size Compiler Optimizations and Techniques for Embedded Systems (Aditya Kumar, 2021)
- Using C Libraries in your Modern C++ Embedded Project (Michael Caisse, 2021)
Series by Jason Turner (C++ Weekly)
Security
- Secure Coding Best Practices - Threat Hunting (Matthew Butler, 2019)
- Secure Coding Best Practices (Matthew Butler, 2018)
- Secure Coding: Your First Line Is The Last Line Of Defense [1/2] (Matthew Butler, 2018)
- Secure Coding: Your First Line Is The Last Line Of Defense [2/2] (Matthew Butler, 2018)
- Misra Parallelism Safety-critical Guidelines for C++11, 17, Then C++20, 23 (A.Weis, M.Wong, I.Burylov, 2021)
Tools
-O3
,-Os
,-Og
,-Oz
, Oh My! (C++ Weekly)- GCC's Leaky Abstractions (C++ Weekly)
- GNU Function Attributes (C++ Weekly)
- C++ To C Compilation (C++ Weekly)
- Start Using Visual C++ (C++ Weekly)
- Clang's Heap Elision (C++ Weekly)
- LLVM: A Modern, Open C++ Toolchain (Chandler Carruth, 2017)
- What Else Has My Compiler Done For Me Lately? (Matt Godbolt, 2018)
- What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid (Matt Godbolt, 2017)
- Teaching old compilers new tricks (Tony Wasserka, 2018)
- A quick view into a compiler (Arvid Gerstmann, 2017)
- More Modern CMake (Deniz Bahadir, 2018)
- Effective CMake (Daniel Pfeifer, 2017))
- Deep CMake for Library Authors (Craig Scott, 2019)
- Modern CMake for modular design (Mathieu Ropert, 2017)
- Using Modern CMake Patterns… (Mathieu Ropert, 2017)
- CMake: One Tool To Build Them All (Bill Hoffman ], 2021)
- Oh No! More Modern CMake (Deniz Bahadir, 2019)
- Modern CMake Modules (Bret Brown, 2021)
- cpp_starter_project GUI Additions (C++ Weekly)
- Taking the Plunge Towards CMake in Boost (Paul Fultz II, 2019)
- Cevelop IDE With CMake Based Projects (C++ Weekly)
- Testing in Software Engineering ~2010-2030 (Titus Winters)
- Communicating via Diagnostics: Observations and Tips for Authors (Walter Brown)
- Modern C++ Testing with Catch2 (Phil Nash, 2018)
- UT - C++20 Unit Testing Framework (Kris Jusiak, 2021)
- All Your Tests are Terrible: Tales from the Trenches (Titus Winters and Hyrum Wright, 2017)
- Intro To Travis CI (C++ Weekly)
- Intro to AppVeyor (C++ Weekly)
- Intro To CTest (C++ Weekly)
- kcov (C++ Weekly)
- Using Codecov and Project Badges (C++ Weekly)
- Fuzz Testing (C++ Weekly)
- gdbgui (C++ Weekly)
- Back To Basics: Debugging Techniques (Bob Steagall, 2021)
- How C++ Debuggers Work (Sy Brand, 2018)
- Modern Linux C++ debugging tools - under the covers (Law Greg, 2019)
- GDB - A Lot More Than You Knew (Greg Law, 2016)
- Time Travel Debugging (James McNellis, 2018)
- Debug C++ Without Running (Anastasia Kazakova, 2018)
- Memory and C++ debugging at Electronic Arts (Scott Wardle, 2015)
- Time Travel Debugging (James McNellis, 2018)
- Debugging memory corruptions in C++ (Mateusz Nowak, 2019)
- Become a GDB Power User (Greg Law, 2016)
- Give me 15 minutes & I'll change your view of GDB (Greg Law, 2015)
- Debugging Assembly Language and GPU Kernels in Visual Studio Code (Julia Reid, 2021)
Compiler Explorer
Visual Studio Code
- A modern formatting library for C++ (Victor Zverovich, 2017)
- {fmt} is Addictive! Using {fmt} and spdlog (C++ Weekly)
- Why does std::format do that? (Charlie Barto, 2021)
- Range-based text formatting (Arno Schödl, 2018)
- Fast Conversion From UTF-8 with C++, DFAs, and SSE Intrinsics (Bob Steagall, 2018)
- The strange details of std::string at Facebook (Nicholas Ormrod, 2016)
std::string_view
(C++17) (C++ Weekly)- Enough
string_view
to Hang Ourselves (Victor Ciura, 2018) - StringViews, StringViews everywhere! (Marc Mutz, 2017)
- C++ OpenGL (TheChernoProject)
- CsPaint Library - Rendering with Vulkan (CopperSpice C++)
- Rendering 3D Graphics (CopperSpice C++)
- Evolution of Graphics Technology (CopperSpice C++)
- GPU, Pipeline, and the Vector Graphics API (CopperSpice C++)
- Rendering text on the GPU (CopperSpice C++)
- High Performance Graphics and Text Rendering on the GPU (CopperSpice C++)
- 3D Graphics for Dummies (Chris Ryan, 2021)
- CTRE: Compile Time Regular Expressions (C++ Weekly)
- Compile time regular expressions (Hana Dusíková, 2018)
- Compile Time Regular Expressions with A Deterministic Finite Automaton (Hana Dusíková, 2019)
- Regular Expressions Redefined in C++ (Hana Dusikova)
- A State of Compile Time Regular Expressions (Dusikova Hana, 2019)
Example
sby Jason Turner (C++ Weekly)
by Jason Turner (C++ Weekly)
by Jason Turner (C++ Weekly)
by Jason Turner (C++ Weekly)
Teaching
- Stop Teaching C (Kate Gregory, 2015)
- extern c: Talking to C Programmers about C++ (Dan Saks, 2016)
- Learning C++ isn't Difficult, Teaching is the Trick (Christopher Di Bella)
- How to Teach C++ and Influence a Generation (Christopher Di Bella, 2018)
- Building for the Best of Us: Design and Development with Kids in Mind (Sara Chipps, 2017)
- Learning and Teaching Modern C++ (Bjarne Stroustrup, 2017)
Comments…