Search⌘ K
AI Features

Mixins

Explore the concept of mixins in C++ template metaprogramming and understand how they differ from the CRTP pattern. Learn to add functionality to classes while managing complexity and combining static with dynamic polymorphism for versatile design patterns.

Mixins are small classes that are designed to add functionality to other classes. If we read about mixins, we’ll often find that the CRTP is used to implement mixins in C++. This is an incorrect statement. The CRTP helps achieve a similar goal to mixins, but they are different techniques. The point of mixins is that they’re supposed to add functionality to classes without being a base class to them, which is the key to the CRTP pattern. Instead, mixins are supposed to inherit from the classes they add functionality to, which is the CRTP upside down.

The CRTP vs. mixins

Remember the earlier example with knights and mages that could move forth and back with the step_forth and step_back member functions? The knight and mage classes were derived from the movable_unit class template that added the functions advance and retreat, which enabled units to move several ...