SkillAgentSearch skills...

ModernCppDesign

Playground to the famous book from Andrei Alexandrescu

Install / Use

/learn @LukasWoodtli/ModernCppDesign
About this skill

Quality Score

0/100

Category

Design

Supported Platforms

Universal

README

My playground for the examples of the famous book: "Modern C++ Design"

Notes

My notes to the book can be found here

Build

Build Status

Contents

Part I: Techniques

Chapter 1. Policy-Based Class Design (p. 25)

| Section | Title | Done | |---------|-------------------------------------------|------| | 1.1 | The Multiplicity of Software Design | ✓ | | 1.2 | The Failure of the Do-It-All Interface | ✓ | | 1.3 | Multiple Inheritance to the Rescue? | ✓ | | 1.4 | The Benefit of Templates | ✓ | | 1.5 | Policies and Policy Classes | ✓ | | 1.6 | Enriched Policies | ✓ | | 1.7 | Destructors of Policy Classes | ✓ | | 1.8 | Optional Functionality Through Incomplete Instantiation | ✓ | | 1.9 | Combining Policy Classes | ✓ | | 1.10 | Customizing Structure with Policy Classes | ✓ | | 1.11 | Compatible and Incompatible Policies | ✓ | | 1.12 | Decomposing a Class into Policies | ✓ | | 1.13 | Summary | ✓ |

Chapter 2. Techniques (p. 49)

| Section | Title | Done | |---------|-------------------------------------|------| | 2.1 | Compile-Time Assertions | ✓ | | 2.2 | Partial Template Specialization | ✓ | | 2.3 | Local Classes | ✓ | | 2.4 | Mapping Integral Constants to Types | ✓ | | 2.5 | Type-to-Type Mapping | ✓ | | 2.6 | Type Selection | ✓ | | 2.7 | Detecting Convertibility and Inheritance at Compile Time | ✓ | | 2.8 | A Wrapper Around type_info | ✓ | | 2.9 | NullType and EmptyType | ✓ | | 2.10 | Type Traits | ✓ | | 2.11 | Summary | ✓ |

Chapter 3. Typelists (p. 76)

| Section | Title | Done | |---------|-------------------------------------|------| | 3.1 | The Need for Typelists | ✓ | | 3.2 | Defining Typelists | ✓ | | 3.3 | Linearizing Typelist Creation | ✓ | | 3.4 | Calculating Length | ✓ | | 3.5 | Intermezzo | ✓ | | 3.6 | Indexed Access | ✓ | | 3.7 | Searching Typelists | ✓ | | 3.8 | Appending to Typelists | ✓ | | 3.9 | Erasing a Type from a Typelist | ✓ | | 3.10 | Erasing Duplicates | ✓ | | 3.11 | Replacing an Element in a Typelist | ✓ | | 3.12 | Partially Ordering Typelists | ✓ | | 3.13 | Class Generation with Typelists | ✓ | | 3.14 | Summary | ✓ | | 3.15 | Typelist Quick Facts | ✓ |

Chapter 4. Small-Object Allocation (p. 104)

| Section | Title | Done | |---------|--------------------------------------------|------| | 4.1 | The Default Free Store Allocator | ✓ | | 4.2 | The Workings of a Memory Allocator | ✓ | | 4.3 | A Small-Object Allocator | ✓ | | 4.4 | Chunks | ✓ | | 4.5 | The Fixed-Size Allocator | ✓ | | 4.6 | The SmallObjAllocator Class | ✓ | | 4.7 | A Hat Trick | ✓ | | 4.8 | Simple, Complicated, Yet Simple in the End | ✓ | | 4.9 | Administrivia | ✓ | | 4.10 | Summary | ✓ | | 4.11 | Small-Object Allocator Quick Facts | ✓ |

Part II: Components

Chapter 5. Generalized Functors (p. 128)

| Section | Title | Done | |-----------|-------------------------------------------------------|------| | 5.1 | The Command Design Pattern | ✓ | | 5.2 | Command in the Real World | ✓ | | 5.3 | C++ Callable Entities | ✓ | | 5.4 | The Functor Class Template Skeleton | ✓ | | 5.5 | Implementing the Forwarding Functor::operator() | ✓ | | 5.6 | Handling Functors | ✓ | | 5.7 | Build One, Get One Free | ✓ | | 5.8 | Argument and Return Type Conversions | ✓ | | 5.9 | Handling Pointers to Member Functions | ✓ | | 5.10 | Binding | ✓ | | 5.11 | Chaining Requests | ✓ | | 5.12 | Real-World Issues I: The Cost of Forwarding Functions | ✓ | | 5.13 | Real-World Issues II: Heap Allocation | ✓ | | 5.14 | Implementing Undo and Redo with Functor | ✓ | | 5.15 | Summary | ✓ | | 5.16 | Functor Quick Facts | ✓ |

Chapter 6. Implementing Singletons (p. 161)

| Section | Title | Done | |-----------|-----------------------------------------------------------------------|------| | 6.1 | Static Data + Static Functions != Singleton | ✓ | | 6.2 | The Basic C++ Idioms Supporting Singletons | ✓ | | 6.3 | Enforcing the Singleton's Uniqueness | ✓ | | 6.4 | Destroying the Singleton | ✓ | | 6.5 | The Dead Reference Problem | ✓ | | 6.6 | Addressing the Dead Reference Problem (I): The Phoenix Singleton | ✓ | | 6.7 | Addressing the Dead Reference Problem (II): Singletons with Longevity | ✓ | | 6.8 | Implementing Singletons with Longevity | ✓ | | 6.9 | Living in a Multithreaded World | ✓ | | 6.10 | Putting It All Together | ✓ | | 6.11 | Working with SingletonHolder | ✓ | | 6.12 | Summary | ✓ | | 6.13 | SingletonHolder Class Template Quick Facts | ✓ |

Chapter 7. Smart Pointers (p. 193)

| Section | Title | Done | |-----------|--------------------------------------------------|------| | 7.1 | Smart Pointers 101 | ✓ | | 7.2 | The Deal | ✓ | | 7.3 | Storage of Smart Pointers | ✓ | | 7.4 | Smart Pointer Member Functions | ✓ | | 7.5 | Ownership-Handling Strategies | ✓ | | 7.6 | The Address-of Operator | ✓ | | 7.7 | Implicit Conversion to Raw Pointer Types | ✓ | | 7.8 | Equality and Inequality | ✓ | | 7.9 | Ordering Comparisons | ✓ | | 7.10 | Checking and Error Reporting | ✓ | | 7.11 | Smart Pointers to const and const Smart Pointers | ✓ | | 7.12 | Arrays | ✓ | | 7.13 | Smart Pointers and Multithreading | ✓ | | 7.14 | Putting It All Together | ✓ | | 7.15 | Summary | ✓ | | 7.16 | SmartPtr Quick Facts | ✓ |

Chapter 8. Object Factories (p. 237)

| Section | Title | Done | |-----------|------------------------------------------------------|------| | 8.1 | The Need for Object Factories | ✓ | | 8.2 | Object Factories in C++: Classes and Objects | ✓ | | 8.3 | Implementing an Object Factory | ✓ | | 8.4 | Type Identifiers | ✓ | | 8.5 | Generalization | ✓ | | 8.6 | Minutiae | ✓ | | 8.7 | Clone Factories | ✓ | | 8.8 | Using Object Factories with Other Generic Components | ✓ | | 8.9 | Summary | ✓ | | 8.10 | Factory Class Template Quick Facts | ✓ | | 8.11 | CloneFactory Class Template Quick Facts | ✓ |

Chapter 9. Abstract Factory (p. 262)

| Section | Title | Done | |-----------|---------------------------------------------------|------| | 9.1 | The Architectural Role of Abstract Factory | ✓ | | 9.2 | A Generic Abstract Factory Interface | ✓ | | 9.3 | Implementing AbstractFactory | ✓ | | 9.4 | A Prototype-Based Abstract Factory Implementation | ✓ | | 9.5 | Summary | ✓ | | 9.6 | AbstractFactory and ConcreteFactory Quick Facts |

View on GitHub
GitHub Stars14
CategoryDesign
Updated5d ago
Forks6

Languages

C++

Security Score

75/100

Audited on Apr 1, 2026

No findings