Log In
0% completed
All Lessons
Free Lessons (4)
Introduction to the Course
Getting Started
What This Course Covers
Course Prerequisites and Conventions
Template Basics
An Introduction to Templates
Understanding the Need for Templates
Writing Our First Templates
Understanding Template Terminology
A Brief History of Templates
The Pros and Cons of Templates
Summary of Template Basics
Quiz: Template Basics
Challenge: Finding the Array Sum
Solution: Finding the Array Sum
Template Fundamentals
An Introduction to Template Fundamentals
Defining Function Templates
Defining Class Templates
Defining Member Function Templates
Understanding Template Parameters
Understanding Default Template Arguments
Understanding Template Instantiation
Understanding Explicit Specialization
Understanding Partial Specialization
Defining Variable Templates
Defining Alias Templates
Exploring Generic Lambdas and Lambda Templates
Summary of Template Fundamentals
Quiz: Template Fundamentals
Challenge: Pair Template
Solution: Pair Template
Variadic Templates
An Introduction to Variadic Templates
Understanding the Need for Variadic Templates
Variadic Function Templates
Parameter Packs
Understanding Parameter Packs Expansion
Variadic Class Templates
Fold Expressions
Variadic Alias Templates
Variadic Variable Templates
Summary of Variadic Templates
Quiz: Variadic Templates
Challenge: Concatenate Strings
Solution: Concatenate Strings
Advanced Template Concepts
Introduction to Advanced Template Concepts
Understanding Name Binding and Dependent Names
Exploring Template Recursion
Function Template Argument Deduction
Class Template Argument Deduction
Forwarding References
The decltype Specifier
The std::declval Type Operator
Understanding Friendship in Templates
Summary of Advanced Template Concepts
Quiz: Advanced Template Concepts
Challenge: Dynamic Tuple Creation
Solution: Dynamic Tuple Creation
Type Traits and Conditional Compilation
An Introduction to Type Traits and Conditional Compilation
Understanding and Defining Type Traits
Exploring SFINAE and Its Purpose
Enabling SFINAE with the enable_if Type Trait
Using constexpr if
Exploring the Standard Type Traits: Part 1
Exploring the Standard Type Traits: Part 2
Seeing Real-World Examples of Using Type Traits
Summary of Type Traits and Conditional Compilation
Quiz: Type Traits and Conditional Compilation
Challenge: Type-Based Addition and Type Information
Solution: Type-Based Addition and Type Information
Concepts and Constraints
An Introduction to Concepts and Constraints
Understanding the Need for Concepts
Defining Concepts
Exploring Requires Expressions
Composing Constraints
Ordering Templates with Constraints
Constraining Nontemplate Member Functions
Constraining Class Templates
Constraining Variable Templates and Template Aliases
Learning More Ways to Specify Constraints
Using Concepts to Constrain Auto Parameters
Exploring the Standard Concepts Library
Summary of Concepts and Constraints
Quiz: Concepts and Constraints
Challenge: Callback Function Compatibility Validation
Solution: Callback Function Compatibility Validation
Patterns and Idioms
An Introduction to Patterns and Idioms
Dynamic vs. Static Polymorphism
The Curiously Recurring Template Pattern
Mixins
Type Erasure
Tag Dispatching
Expression Templates
Typelists
Summary of Patterns and Idioms
Quiz: Patterns and Idioms
Challenge: Vector Algebra
Solution: Vector Algebra
Ranges and Algorithms
An Introduction to Ranges and Algorithms
Understanding the Design of Containers, Iterators, and Algorithms
Creating a Custom Container and Iterator
Writing a Custom General-Purpose Algorithm
Summary of Ranges and Algorithms
Quiz: Ranges and Algorithms
Challenge: Tuplezip Algorithm
Solution: Tuplezip Algorithm
The Ranges Library
An Introduction to the Ranges Library
Advancing from Abstract Ranges to the Ranges Library
Understanding Range Concepts and Views
Exploring More Examples of Range Adaptors
Understanding the Constrained Algorithms
Writing Our Own Range Adaptor
Summary of the Ranges Library
Quiz: The Ranges Library
Challenge: Subrange Adaptor
Solution: Subrange Adaptor
Closing Notes
Conclusion
Course Appendix
Running Code on Your Local Machine
Further Readings
C++ Template Metaprogramming
/
...
/
Summary of the Ranges Library
Summary of the Ranges Library
Sum up the knowledge and skills gained throughout this section.
We'll cover the following...
Section recap
...