Я изучаю mixins (в С++). Я прочитал несколько статей о mixins и нашел два разных шаблона "аппроксимирующих" mixins в С++.
Образец 1:
template<class Base>
struct Mixin1 : public Base {
};
template<class Base>
struct Mixin2 : public Base {
};
struct MyType {
};
typedef Mixin2<Mixin1<MyType>> MyTypeWithMixins;
Образец 2: (можно назвать CRTP)
template<class T>
struct Mixin1 {
};
template<class T>
struct Mixin2 {
};
struct MyType {
};
struct MyTypeWithMixins :
public MyType,
public Mixin1<MyTypeWithMixins>,
public Mixin2<MyTypeWithMixins> {
};
Насколько они эквивалентны? Я хотел бы знать практическую разницу между шаблонами.