Zwei verschiedene Mixin-Patterns in C ++. (mixin? CRTP?)
Ich lerne über Mixins (in C ++). Ich habe einige Artikel über Mixins gelesen und in C ++ zwei verschiedene Muster für die "Annäherung" von Mixins gefunden.
Muster 1:
template<class Base>
struct Mixin1 : public Base {
};
template<class Base>
struct Mixin2 : public Base {
};
struct MyType {
};
typedef Mixin2<Mixin1<MyType>> MyTypeWithMixins;
Muster 2: (kann als CRTP bezeichnet werden)
template<class T>
struct Mixin1 {
};
template<class T>
struct Mixin2 {
};
struct MyType {
};
struct MyTypeWithMixins :
public MyType,
public Mixin1<MyTypeWithMixins>,
public Mixin2<MyTypeWithMixins> {
};
Sind sie praktisch gleichwertig? Ich möchte den praktischen Unterschied zwischen den Mustern kennen.