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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage