Mixins
Mixins are small classes that are designed to add functionality to other classes. If you read about mixins, you will often find that the curiously recurring template pattern 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 are 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.
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 steps forth or back. The same example can be implemented using mixins in a reverse order. Here is...