Skip to content

Commit 674d5df

Browse files
committed
Release 1.6.0
pdf files regeneration and README update
1 parent 2765deb commit 674d5df

22 files changed

+30
-30
lines changed

01.Introduction.pdf

-425 KB
Binary file not shown.

02.Basic_Concepts_I.pdf

1.77 KB
Binary file not shown.

03.Basic_Concepts_II.pdf

5.07 KB
Binary file not shown.

04.Basic_Concepts_III.pdf

16.4 KB
Binary file not shown.

06.Basic_Concepts_V.pdf

-5.3 KB
Binary file not shown.

07.Object_Oriented_I.pdf

2.17 KB
Binary file not shown.

09.Templates_I.pdf

48.6 KB
Binary file not shown.

10.Templates_II.pdf

11.9 KB
Binary file not shown.

11.Translation_Units_I.pdf

-84 Bytes
Binary file not shown.

12.Translation_Units_II.pdf

-210 Bytes
Binary file not shown.

13.Code_Convention.pdf

69 Bytes
Binary file not shown.

14.Ecosystem_I.pdf

4.66 KB
Binary file not shown.

15.Ecosystem_II.pdf

465 KB
Binary file not shown.

16.Utilities.pdf

2.16 KB
Binary file not shown.

17.Iterators_Containers_Alg.pdf

0 Bytes
Binary file not shown.

18.Advanced_Topics_I.pdf

0 Bytes
Binary file not shown.

19.Advanced_Topics_II.pdf

0 Bytes
Binary file not shown.

20.Optimization_I.pdf

163 KB
Binary file not shown.

21.Optimization_II.pdf

-90 Bytes
Binary file not shown.

22.Optimization_III.pdf

-215 Bytes
Binary file not shown.

README.md

+30-30
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ If you enjoy the course or you find it useful, please add a **Star**
7373
| **21** | **[Optimization II - Code Optimization](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/21.Optimization_II.pdf)** | Arithmetic optimizations, memory optimizations, etc. |
7474
| **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 |
7575

76-
***ALL-IN-ONE BOOK***: **[modern-cpp.pdf](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/modern-cpp.pdf)**
76+
***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)
7777

7878
## TOPICS IN DETAILS
7979

@@ -86,7 +86,7 @@ If you enjoy the course or you find it useful, please add a **Star**
8686
* **Books and References**
8787
* **The Course**
8888

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)**
9090

9191
* **Preparation**: What compiler should I use?, What editor/IDE compiler should I use?, How to compile?
9292
* **Hello World**: I/O Stream
@@ -97,17 +97,19 @@ If you enjoy the course or you find it useful, please add a **Star**
9797

9898
**[3. Basic Concepts II - Integral and Floating-point Types](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/03.Basic_Concepts_II.pdf)**
9999

100-
* **Integral Data Types**: Fixed width integers, `size_t` and`ptrdiff_t`, When use signed/unsigned integer? Promotion, Truncation, Undefined behavior
100+
* **Integral Data Types**: Fixed width integers, `size_t` and`ptrdiff_t`, Signed/Unsigned integer characteristics, Promotion, Truncation, Undefined behavior
101101
* **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
102102
* **Floating-point Issues**: Catastrophic cancellation, Floating-point comparison
103103

104104
**[4. Basic Concepts III - Entities and Control Flow](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/04.Basic_Concepts_III.pdf)**
105105

106+
* **Entities**
107+
* **Declaration and Definition**
106108
* **Enumerators**
107109
* **`struct`, Bitfield, `union`**
108-
* **Control Flow**: `if` Statement, `for` Loop, Range-base `for` loop, `switch`, `goto`
110+
* **Control Flow**: `if` Statement, `for` Loop, Range-base `for` loop, `switch`, `goto`, Avoid unused variable warning `[[maybe unused]]`
109111

110-
**[5. Basic Concepts IV - Memory Management](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/05.Basic_Concepts_IV.pdf)**
112+
**[5. Basic Concepts IV - Memory Concepts](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/05.Basic_Concepts_IV.pdf)**
111113

112114
* **Heap and Stack**: Stack Memory, `new`, `delete`, Non-allocating placement allocation, Non-throwing allocation, Memory leak
113115
* **Initialization**: Variable initialization, Uniform initialization, Fixed-size array initialization, Structure initialization, Dynamic memory initialization
@@ -119,17 +121,17 @@ If you enjoy the course or you find it useful, please add a **Star**
119121

120122
**[6. Basic Concepts V - Functions and Preprocessing](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/06.Basic_Concepts_V.pdf)**
121123

122-
* **Declaration and Definition**
123-
* **Functions**: Pass by-value, Pass by-pointer, Pass by-reference, Function signature and Overloading, Overloading and `=delete`, Default parameters, Attributes
124+
* **Functions**: Pass by-value, Pass by-pointer, Pass by-reference, Function signature and Overloading, Overloading and `=delete`, Default parameters, Attributes `[[attributes]]`
124125
* **Function Pointer and Function Objects**
125-
* **Lambda Expressions**: Capture list, Other features, Capture list and classes
126-
* **Preprocessing**: Preprocessors, Common errors, Useful macro, Stringizing operator (`#`), `#error` and `warning`, `#pragma`, Token-Pasting Operator (`##`), Variadic Macro
126+
* **Lambda Expressions**: Capture list, Parameters, Composability, `constexpr/consteval`, `template`, `mutable`, `[[nodiscard]]`, Capture list and classes
127+
* **Preprocessing**: Preprocessors, Common errors, Source location macros, Conditional compiling macros, Stringizing operator (`#`), `#error` and `warning`, `#pragma`, Token-Pasting Operator (`##`), Variadic Macro
127128

128129
**[7. Object-Oriented Programming I - Class Concepts](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/07.Object_Oriented_I.pdf)**
129130

130131
* **C++ Classes**: RAII Idiom
131-
* **Class Hierarchy**: Access specifiers, Inheritance access specifiers
132-
* **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
133135
* **Copy Constructor**
134136
* **Class Destructor**
135137
* **Defaulted Constructors, Destructor, and Operators** (`= default`)
@@ -144,22 +146,22 @@ If you enjoy the course or you find it useful, please add a **Star**
144146

145147
**[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)**
146148

147-
* **Function Template**: Overview, Template parameters, Template parameter - default value, Specialization, Overloading
149+
* **Function Template**: Overview, Template parameters, Template parameter - default value, Overloading, Specialization
148150
* **Template Variable**
149151
* **Template Parameter Types**: Generic Type Notes, `auto` Placeholder, Class template parameter type, Array and pointer types, Function type
150152
* **Compile-Time Utilities**: `static_assert`, `decltype` Keyword, `using` Keyword
151153
* **Type Traits**: Overview, Type traits library, Type manipulation
152154

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)**
154156

155-
* **Class Template**: Class specialization, Template class constructor
157+
* **Class Template**: Class specialization, Template class constructor, Constructor template automatic deduction (CTAD)
156158
* **Class Template - Advanced Concepts**: Class + Function - Specialization, Dependent Names - `typename` and `template` Keywords, Class template hierarchy and `using`, `friend` Keyword, Template Template Arguments
157159
* **Template Meta-Programming**
158160
* **SFINAE: Substitution Failure Is Not An Error**: Function SFINAE, Class SFINAE, Class + Function SFINAE
159161
* **Variadic Template**: Folding Expression, Variadic class template
160162
* **C++20 Concepts**: Overview, `concept` Keyword, `requires` Clause, `requires` Expression, `requires` Expression + Clause, `requires` Clause + Expression, `requires` and `constexpr`, Nested `requires`
161163

162-
**[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)**
163165

164166
* **Basic Concepts**: Translation unit, Local and global scope, Linkage
165167
* **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**
171173
* **ODR - Class Template**: Cases, `extern` keyword
172174
* **ODR Undefined Behavior and Summary**
173175

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)**
175177

176178
- **`#include` Issues**: Forward declaration, Include guard, Circular dependencies, Common linking errors
177179
- **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**
185187
* **`#include`**
186188
* **Macro and Preprocessing**
187189
* **Namespace**
188-
* **Variables**
190+
* **Variables and Arithmetic Types**
189191
* **Functions**
190192
* **Structs and Classes**
191193
* **Control Flow**
@@ -195,20 +197,20 @@ If you enjoy the course or you find it useful, please add a **Star**
195197
* **Readability and Formatting**
196198
* **Code Documentation**
197199

198-
**[14. Ecosystem I](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/14.Ecosystem_I.pdf)**
200+
**[14. Ecosystem I - Debugging](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/14.Ecosystem_I.pdf)**
199201

200202
* **Debugging**
201203
* **Assertion**
202-
* **Execution debugging**
204+
* **Execution debugging**: Breakpoints, Watchpoints / Catchpoints, Control Flow, Stack and Info, Print, Disassemble
203205
* **Memory Debugging**: `valgrind`, Stack protection
204206
* **Sanitizers**: Address sanitizer, Leak sanitizer, Memory sanitizers, Undefined behavior sanitizer
205207
* **Debugging Summary**
206208
* **Compiler Warnings**
207209
* **Static Analysis**
208-
* **Code Testing**: Unit test, Code coverage, Fuzz testing
210+
* **Code Testing**: Unit test, Test-Driven Development (TDD), Code coverage, Fuzz testing
209211
* **Code Quality**: `clang-tidy`
210212

211-
**[15. Ecosystem II](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/15.Ecosystem_II.pdf)**
213+
**[15. Ecosystem II - Cmake and Other Tools](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/15.Ecosystem_II.pdf)**
212214

213215
- **CMake**: `cmake` and `ctest`
214216
- **Code Documentation**: `doxygen`
@@ -218,11 +220,11 @@ If you enjoy the course or you find it useful, please add a **Star**
218220
**[16. Utilities](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/16.Utilities.pdf)**
219221

220222
* **I/O Stream**: Manipulator, `ofstream/ifstream`
221-
* **Math Libraries**
222223
* **Strings**: `std::string`, Conversion from/to numeric values, `std::string_view`, `std::format`, `std::print`
224+
* **Math Libraries**
223225
* **Random Number**: Basic Concepts, C++ `<random>`, Seed, PRNG period and quality, Distribution, Quasi-random
224226
* **Time Measuring**: Wall-Clock time, User time, System time
225-
* **Std Template Classes**: `std::byte` `std::pair`, `std::tuple`, `std::variant`, `std::optional`, `std::any`
227+
* **Std Template Classes**: `std::pair`, `std::tuple`, `std::variant`, `std::optional`, `std::any`, `std::stacktrace`
226228
* **Filesystem Library**: Query methods, Modify methods
227229

228230
**[17. Containers, Iterators, and Algorithms](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/17.Iterators_Containers_Alg.pdf)**
@@ -239,7 +241,7 @@ If you enjoy the course or you find it useful, please add a **Star**
239241

240242
**[18. Advanced Topics I](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/18.Advanced_Topics_I.pdf)**
241243

242-
* **Move Semantic**: `lvalues` and `rvalues` references, Move semantic, Compiler implicitly declared, `std::move`
244+
* **Move Semantic**: `lvalues` and `rvalues` references, Move semantic, `std::move`, Class Declaration Semantic
243245
* **Universal Reference and Perfect Forwarding**: Universal reference, Reference collapsing rules, Perfect forwarding
244246
* **Value Categories**
245247
* **`&`, `&&` Ref-qualifiers and `volatile` Overloading**
@@ -249,7 +251,7 @@ If you enjoy the course or you find it useful, please add a **Star**
249251

250252
**[19. Advanced Topics II](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/19.Advanced_Topics_II.pdf)**
251253

252-
- **Undefined Behavior**
254+
- **Undefined Behavior:** Common cases, Detecting undefined behavior
253255
- **Error Handling**: C++ Exceptions, Defining custom exceptions, `noexcept` keyword, Memory allocation issues, Alternative error handling approaches
254256
- **C++ Idioms**: Rule of zero/three/five, Singleton, PIMPL, CRTP, Template Virtual Functions
255257
- **Smart pointers**: `std::unique_ptr`, `std::shared_ptr`, `std::weak_ptr`
@@ -267,16 +269,16 @@ If you enjoy the course or you find it useful, please add a **Star**
267269
* **I/O Operations**: `printf`, Memory mapped I/O, Speed up raw data loading
268270
* **Memory Optimizations**: Heap memory, Stack memory, Cache utilization, data alignment, Memory Prefetch
269271
* **Arithmetic**: Data types, Operations, Conversion, Floating-point, Compiler intrinsic functions, Value in a range, Lookup table
270-
* **Control Flow**: Loop hoisting, Loop unrolling, Branch hints, Compiler hints, Recursion
272+
* **Control Flow**: Loop hoisting, Loop unrolling, Branch hints `[[likely/unlikely]]`, Compiler hints `[[assume]]`, Recursion
271273
* **Functions**: Function call cost, Argument passing, Function optimizations, Function inlining, Pointers aliasing
272-
* **C++ Objects**: Object RAII optimizations
274+
* **Object-Oriented Programming**
273275
* **Std Library and Other Language Aspects**
274276

275277
**[22. Optimization III - Non-Coding Optimizations and Benchmarking](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/22.Optimization_III.pdf)**
276278

277279
* **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
278280
* **Compiler Transformation Techniques**
279-
* **Libraries and Data Structures**: External libraries, Std library
281+
* **Libraries and Data Structures**: External libraries
280282
* **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
281283
* **Profiling**: `gprof`, `uftrace`, `callgrind`, `cachegrind`, `perf` Linux profiler
282284
* **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/)
296298

297299
If you find any typo, conceptual error, or section to improve, please report them by using the `issue` panel.
298300

299-
300-
301301
## Author
302302

303303
`Federico Busato`

modern-cpp.pdf

316 KB
Binary file not shown.

0 commit comments

Comments
 (0)