Back to Basics: Initialization in C++
Talkat CppCon 2023 · on Wednesday, 2023-10-04· at 09:00· Maple 3/4/5, 6700 North Gaylord Rockies Boulevard·
summary
Explains exactly which constructor each form invokes using concrete examples like T t1(1,2,3) T t2{4,5,6} T t3 = t2 and demonstrates where the compiler chooses differently, the parsing trap of the most vexing parse, and when copy elision or value initialization applies. Compares direct vs copy initialization, shows how brace initialization prohibits narrowing, explores initializer_list overload resolution and how make_unique and C++20 aggregate changes actually behave.
AI-written summary · about
chapters (26)
- 0:00Welcome
- 0:27Initialization complexity in C++
- 1:54C inheritance rules
- 3:43Aggregate initialization
- 7:14Class types and constructors
- 10:03Aggregates and constructors
- 12:12Direct initialization
- 14:22Copy vs assignment
- 17:56Copy initialization
- 20:05Mixed mode aggregates
- 21:10Implicit conversions
- 24:04Default initialization
- 26:32Most vexing parse
- 28:17Value initialization
- 32:19C++03 initialization problems
- 38:32Uniform initialization
- 41:24Direct list initialization
- 43:14Copy list initialization
- 45:23Narrowing conversions
- 48:59Initializer lists for STL
- 51:31Empty brace initialization
- 53:15Constructor overload with braces
- 55:46Risks of initializer lists
- 57:54Template initialization pitfalls
- 1:00:28C++20 aggregate improvements
- 1:01:10Key takeaways
related talks
01h 02mBack to Basics: Designing Classes (part 2 of 2)
05mLightning Talk: Required Field for Designated Initialization
01h 00mBack to the basics: Namespaces 101
01h 02mBack to Basics: Function Call Resolution in C++
01h 02m“Modern C++ Design (part 1 of 2)”
01h 01mBack to Basics: Designing Classes (part 1 of 2)
01h 00mBack to Basics: Object-Oriented Programming
57mDesign Patterns - The Most Common Misconceptions (2 of N)
