diff --git a/01.Introduction.pdf b/01.Introduction.pdf
index 8a2224b..887cc1f 100644
Binary files a/01.Introduction.pdf and b/01.Introduction.pdf differ
diff --git a/02.Basic_Concepts_I.pdf b/02.Basic_Concepts_I.pdf
index 6996ce9..0172f94 100644
Binary files a/02.Basic_Concepts_I.pdf and b/02.Basic_Concepts_I.pdf differ
diff --git a/03.Basic_Concepts_II.pdf b/03.Basic_Concepts_II.pdf
index 9dca29b..97766be 100644
Binary files a/03.Basic_Concepts_II.pdf and b/03.Basic_Concepts_II.pdf differ
diff --git a/04.Basic_Concepts_III.pdf b/04.Basic_Concepts_III.pdf
index 6926cc7..f3133ca 100644
Binary files a/04.Basic_Concepts_III.pdf and b/04.Basic_Concepts_III.pdf differ
diff --git a/05.Basic_Concepts_IV.pdf b/05.Basic_Concepts_IV.pdf
index ec153a3..9a99fa8 100644
Binary files a/05.Basic_Concepts_IV.pdf and b/05.Basic_Concepts_IV.pdf differ
diff --git a/06.Object_Oriented_I.pdf b/06.Object_Oriented_I.pdf
index 16393bd..3ed8daf 100644
Binary files a/06.Object_Oriented_I.pdf and b/06.Object_Oriented_I.pdf differ
diff --git a/07.Object_Oriented_II.pdf b/07.Object_Oriented_II.pdf
index 6420f76..15856b8 100644
Binary files a/07.Object_Oriented_II.pdf and b/07.Object_Oriented_II.pdf differ
diff --git a/08.Templates_I.pdf b/08.Templates_I.pdf
index ee25a4f..9699ca1 100644
Binary files a/08.Templates_I.pdf and b/08.Templates_I.pdf differ
diff --git a/09.Templates_II.pdf b/09.Templates_II.pdf
index 5e29c4c..9be5d60 100644
Binary files a/09.Templates_II.pdf and b/09.Templates_II.pdf differ
diff --git a/10.Translation_Units.pdf b/10.Translation_Units.pdf
index 08bd1fe..f6ddd34 100644
Binary files a/10.Translation_Units.pdf and b/10.Translation_Units.pdf differ
diff --git a/11.Code_Convention.pdf b/11.Code_Convention.pdf
index 6c58547..99f9a03 100644
Binary files a/11.Code_Convention.pdf and b/11.Code_Convention.pdf differ
diff --git a/12.Ecosystem.pdf b/12.Ecosystem.pdf
index 8ed5616..d978f2b 100644
Binary files a/12.Ecosystem.pdf and b/12.Ecosystem.pdf differ
diff --git a/13.Utilities.pdf b/13.Utilities.pdf
index 7ee75fa..128fa2f 100644
Binary files a/13.Utilities.pdf and b/13.Utilities.pdf differ
diff --git a/14.Iterators_Containers_Alg.pdf b/14.Iterators_Containers_Alg.pdf
index 9fe2a59..485e2e1 100644
Binary files a/14.Iterators_Containers_Alg.pdf and b/14.Iterators_Containers_Alg.pdf differ
diff --git a/15.Advanced_Topics.pdf b/15.Advanced_Topics.pdf
index 5691c4b..54010ea 100644
Binary files a/15.Advanced_Topics.pdf and b/15.Advanced_Topics.pdf differ
diff --git a/16.Optimization_I.pdf b/16.Optimization_I.pdf
index 3001c98..6cd4a20 100644
Binary files a/16.Optimization_I.pdf and b/16.Optimization_I.pdf differ
diff --git a/17.Optimization_II.pdf b/17.Optimization_II.pdf
index 13d460c..f0358ec 100644
Binary files a/17.Optimization_II.pdf and b/17.Optimization_II.pdf differ
diff --git a/18.Optimization_III.pdf b/18.Optimization_III.pdf
index ed5ef07..55e174b 100644
Binary files a/18.Optimization_III.pdf and b/18.Optimization_III.pdf differ
diff --git a/README.md b/README.md
index cb70010..1c3b6da 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,29 @@
# Modern C++ Programming
+
+
+
+
+
+
+
+
+
+
+
+
-## C++11 / C++14 / C++17 / (C++20)
+
+
+
+
+
+
+
+
+
+## C++11 / C++14 / C++17 / C++20
This *open-access* course is directed at those who are already familiar with C and object-oriented programming towards a proficiency level of C++ programming. The course covers the basics of C++ programming and moves on to advanced C++ semantics and concepts.
@@ -59,7 +80,7 @@ If you enjoy the course or you find it useful, please add a **Star**
* **C++ Fundamental Types Overview**: Arithmetic types, Non-standard arithmetic types, `void` type, Pointer type and `nullptr`
* **Conversion Rules**
* **`auto` declaration**
-* **C++ Operators**: Operators precedence, Prefix/Postfix increment/decrement, Assignment, Compound , and comma operators, Spaceship operator `<=>`
+* **C++ Operators**: Operators precedence, Prefix/Postfix increment/decrement, Assignment, Compound , and comma operators, Spaceship operator `<=>` , Safe Comparison Operators
* **Integral Data Types**: Fixed width integers and `size_t`, When use signed/unsigned integer? Promotion, Truncation, Undefined behavior
* **Floating-point Types and Arithmetic**: Normal/Denormal values, Infinity, Not a Number (`NaN`), Summary, Properties
* **Floating-point Issues**: Catastrophic cancellation, Floating-point comparison
@@ -113,9 +134,11 @@ If you enjoy the course or you find it useful, please add a **Star**
**[9. C++ Templates and Meta-programming II - - Class Templates and SFINAE](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/09.Templates_II.pdf)**
* **Class Template**: Class specialization, Class + Function - specialization, `friend` keyword, Dependent names, Template variable
+* **Class Template - Advanced Concepts**: Class + Function - Specialization, Dependent Names - `typename` and `template` Keywords, `friend` Keyword, Template Template Arguments
* **Template Meta-Programming**
* **SFINAE: Substitution Failure Is Not An Error**: Function SFINAE, Class SFINAE, Class + Function SFINAE
* **Variadic Template**: Folding Expression, Variadic Class Template
+* **C++20 Concepts**: `concept` Keyword, `requires` Clause, `requires` Expression, `requires` Expression + Clause,` requires` Clause + Expression, `requires` and `constexpr`, Nested `requires`
**[10. Translation Units](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/10.Translation_Units.pdf)**
@@ -127,8 +150,9 @@ If you enjoy the course or you find it useful, please add a **Star**
* **Class Template**: Cases, `extern` keyword
* **ODR and Undefined Behavior**
* **`#include` Issues**: Forward declaration, Include guard, Circular dependencies, Common linking errors
-* **Namespace**: Namespace functions vs. `static` methods, Namespace alias, Anonymous namespace, `inline` namespace
-* **How to Compile**: Compile strategies, Deal with libraries, Build static/dynamic libraries, Find dynamic library dependencies, Analyze object/executable symbols
+* **C++20 Modules**: Terminology, Visibility and Reachability, Module unit types, Keywords, Global module fragment, Private module gragment, Header module unit, Module partitions
+* **Namespace**: Namespace functions vs. `static` methods, Namespace alias, Anonymous namespace, `inline` namespace, Attributes and namespace
+* **Compiling Multiple Translation Units**: Fundamental compiler flags, Compile Methods, Deal with libraries, Build static/dynamic libraries, Find dynamic library dependencies, Analyze object/executable symbols
**[11. Code Conventions](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/11.Code_Convention.pdf)**
@@ -164,10 +188,10 @@ If you enjoy the course or you find it useful, please add a **Star**
* **I/O Stream**: Manipulator, `ofstream/ifstream`
* **Math Libraries**
-* **Strings**: `std::string`, Conversion from/to numeric balues, `std::string view`, `std::format`
+* **Strings**: `std::string`, Conversion from/to numeric balues, `std::string_view`, `std::format`
* **Random Number**: Basic Concepts, C++ ``, Seed, PRNG period and quality, Distribution, Quasi-random
* **Time Measuring**: Wall-Clock time, User time, System time
-* **Std Template Classes**: `std::pair`, `std::tuple`, `std::variant`, `std::optional`, `std::any`
+* **Std Template Classes**: `std::byte` `std::pair`, `std::tuple`, `std::variant`, `std::optional`, `std::any`
* **Filesystem Library**: Query methods, Modify methods
**[14. Containers, Iterators, and Algorithms](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/14.Iterators_Containers_Alg.pdf)**
@@ -178,8 +202,9 @@ If you enjoy the course or you find it useful, please add a **Star**
* **Container Adaptors**: `std::stack`, `std::queue`, `std::priority_queue`
* **View**: `std::span`
* **Implement a Custom Iterator**: Semantic, Implement a simple Iterator
-* **Iterator Utility Methods**: `std::advance`, `std::next`, `std::prev`, `std::distance`, Range access methods, Iterator traits
+* **Iterator Utility Methods**: `std::advance`, `std::next`, `std::prev`, `std::distance`, Container access methods, Iterator traits
* **Algorithms Library**: `std::find_if`, `std::sort`, `std::accumulate`, `std::generate`, `std::remove_if`
+* **C++20 Ranges**: Key concepts, Range view, Range adaptor, Range factory, Range algorithms, Range actions
**[15. Advanced Topics](https://github.com/federico-busato/Modern-CPP-Programming/blob/master/15.Advanced_Topics.pdf)**
@@ -217,15 +242,14 @@ If you enjoy the course or you find it useful, please add a **Star**
* **Compiler Optimizations**: About the compiler, Architecture flags, Optimization flags, Help the Compiler to produce better code, Profile guided optimization (PGO)
* **Compiler Transformation Techniques**
* **Libraries and Data Structures**: External libraries, Std library
+* **Performance Benchmarking**: What to test?, Workload/Dataset quality, Cache behavior, Stable CPU performance, Program memory layout, Measurement overhead and compiler Optimizations, Metric evaluation
* **Profiling**: `gprof`, `uftrace`, `callgrind`, `cachegrind`, `perf` Linux profiler
-* **Performance Benchmarking**: What to test?, Workload/Dataset quality, Cache behavior, Stable CPU performance, Program memory layout
* **Parallel Computing**: Concurrency vs. Parallelism, Performance scaling, Gustafson’s Law, Parallel programming languages
### Roadmap
-1. Complete C++20 topics
-2. Software Design Chapter
-3. Build Aspects Chapter (e.g. reducing build time)
+1. Software Design Chapter
+2. Build Aspects Chapter (e.g. reducing build time)
### Essential Tool
@@ -235,7 +259,13 @@ Online compiler and execution: [CompilerExplorer](https://godbolt.org/)
### Reporting bugs and contributing
-If you find any typos, conceptual errors, or sections to improve, please report them by writing directly to me or by using the `issue` panel
+If you find any typo, conceptual error, or section to improve, please report them by writing directly to me or by using the `issue` panel
+
+
+
+
+
+
## Author