You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+30-30
Original file line number
Diff line number
Diff line change
@@ -73,7 +73,7 @@ If you enjoy the course or you find it useful, please add a **Star**
73
73
|**21**|**[Optimization II - Code Optimization](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/21.Optimization_II.pdf)**| Arithmetic optimizations, memory optimizations, etc. |
74
74
|**22**|**[Optimization III - Non-Coding Optimizations and Benchmarking](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/22.Optimization_III.pdf)**| Compiler optimizations, profiling and benchmarking tools |
***ALL-IN-ONE BOOK***: **[modern-cpp.pdf](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/modern-cpp.pdf)** (could be a few commits behind)
77
77
78
78
## TOPICS IN DETAILS
79
79
@@ -86,7 +86,7 @@ If you enjoy the course or you find it useful, please add a **Star**
86
86
***Books and References**
87
87
***The Course**
88
88
89
-
**[2. Basic Concepts I - Fundamental Types](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/02.Basic_Concepts_I.pdf)**
89
+
**[2. Basic Concepts I - Fundamental Types and Operations](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/02.Basic_Concepts_I.pdf)**
90
90
91
91
***Preparation**: What compiler should I use?, What editor/IDE compiler should I use?, How to compile?
92
92
***Hello World**: I/O Stream
@@ -97,17 +97,19 @@ If you enjoy the course or you find it useful, please add a **Star**
97
97
98
98
**[3. Basic Concepts II - Integral and Floating-point Types](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/03.Basic_Concepts_II.pdf)**
99
99
100
-
***Integral Data Types**: Fixed width integers, `size_t` and`ptrdiff_t`, When use signed/unsigned integer? Promotion, Truncation, Undefined behavior
***Floating-point Types and Arithmetic**: IEEE Floating-point Standard and Other Representations, Normal/Denormal values, Infinity, Not a Number (`NaN`), Machine Epsilon, Units at the Last Place (ULP), Cheatsheet, Summary, Arithmetic Properties, Detect Floating-point Errors
**[4. Basic Concepts III - Entities and Control Flow](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/04.Basic_Concepts_III.pdf)**
**[7. Object-Oriented Programming I - Class Concepts](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/07.Object_Oriented_I.pdf)**
***Class Constructor**: Default constructor, Class initialization, Uniform initialization, Delegate constructor, `explicit` keyword, `[[nodiscard]]` and classes
132
+
***Class Hierarchy**
133
+
***Access specifiers**: Inheritance access specifiers, When use `public/protected/private` for data members?
134
+
***Class Constructor**: Default constructor, Class initialization, Uniform initialization for pbjects, Delegate constructor, `explicit` keyword, `[[nodiscard]]` and classes
133
135
***Copy Constructor**
134
136
***Class Destructor**
135
137
***Defaulted Constructors, Destructor, and Operators** (`= default`)
@@ -144,22 +146,22 @@ If you enjoy the course or you find it useful, please add a **Star**
144
146
145
147
**[9. Templates and Meta-programming I - Function Templates and Compile-Time Utilities](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/09.Templates_I.pdf)**
***Type Traits**: Overview, Type traits library, Type manipulation
152
154
153
-
**[10. Templates and Meta-programming II - - Class Templates and SFINAE](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/10.Templates_II.pdf)**
155
+
**[10. Templates and Meta-programming II - Class Templates and SFINAE](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/10.Templates_II.pdf)**
154
156
155
-
***Class Template**: Class specialization, Template class constructor
157
+
***Class Template**: Class specialization, Template class constructor, Constructor template automatic deduction (CTAD)
156
158
***Class Template - Advanced Concepts**: Class + Function - Specialization, Dependent Names - `typename` and `template` Keywords, Class template hierarchy and `using`, `friend` Keyword, Template Template Arguments
157
159
***Template Meta-Programming**
158
160
***SFINAE: Substitution Failure Is Not An Error**: Function SFINAE, Class SFINAE, Class + Function SFINAE
159
161
***Variadic Template**: Folding Expression, Variadic class template
**[11. Translation Units I](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/11.Translation_Units_I.pdf)**
164
+
**[11. Translation Units I - Linkage and One Definition Rule](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/11.Translation_Units_I.pdf)**
163
165
164
166
***Basic Concepts**: Translation unit, Local and global scope, Linkage
165
167
***Storage Class and Duration**: Storage duration, Storage class, `static` and `extern` keywords, Internal/External linkage examples
@@ -171,7 +173,7 @@ If you enjoy the course or you find it useful, please add a **Star**
171
173
***ODR - Class Template**: Cases, `extern` keyword
172
174
***ODR Undefined Behavior and Summary**
173
175
174
-
**[12. Translation Units II](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/12.Translation_Units_II.pdf)**
176
+
**[12. Translation Units II - Include, Module, and Namespace](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/12.Translation_Units_II.pdf)**
175
177
176
178
-**`#include` Issues**: Forward declaration, Include guard, Circular dependencies, Common linking errors
177
179
-**C++20 Modules**: Overview, Terminology, Visibility and Reachability, Module unit types, Keywords, Global module fragment, Private module fragment, Header module unit, Module partitions
@@ -185,7 +187,7 @@ If you enjoy the course or you find it useful, please add a **Star**
185
187
***`#include`**
186
188
***Macro and Preprocessing**
187
189
***Namespace**
188
-
***Variables**
190
+
***Variables and Arithmetic Types**
189
191
***Functions**
190
192
***Structs and Classes**
191
193
***Control Flow**
@@ -195,20 +197,20 @@ If you enjoy the course or you find it useful, please add a **Star**
***Functions**: Function call cost, Argument passing, Function optimizations, Function inlining, Pointers aliasing
272
-
***C++ Objects**: Object RAII optimizations
274
+
***Object-Oriented Programming**
273
275
***Std Library and Other Language Aspects**
274
276
275
277
**[22. Optimization III - Non-Coding Optimizations and Benchmarking](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/22.Optimization_III.pdf)**
276
278
277
279
***Compiler Optimizations**: About the compiler, Compiler optimization flags, Linker optimization flags, Architecture flags, Help the Compiler to produce better code, Profile guided optimization (PGO), Post-Processing Binary Optimizer
278
280
***Compiler Transformation Techniques**
279
-
***Libraries and Data Structures**: External libraries, Std library
281
+
***Libraries and Data Structures**: External libraries
280
282
***Performance Benchmarking**: What to test?, Workload/Dataset quality, Cache behavior, Stable CPU performance, Program, Multi-threads considerations, Program memory layout, Measurement overhead, Compiler optimizations, Metric evaluation
281
283
***Profiling**: `gprof`, `uftrace`, `callgrind`, `cachegrind`, `perf` Linux profiler
282
284
***Parallel Computing**: Concurrency vs. Parallelism, Performance scaling, Gustafson’s Law, Parallel programming languages
@@ -296,8 +298,6 @@ Online compiler and execution: [CompilerExplorer](https://godbolt.org/)
296
298
297
299
If you find any typo, conceptual error, or section to improve, please report them by using the `issue` panel.
0 commit comments