Dziękuję za odpowiedź, aczkolwiek chodziło mi o nieco inny efekt (ale to moja wina, bo opisałem za mało dokładnie), polegający na customizacji pól klasy. Można to zrobić tak:
template<typename... Pack>
struct EmptyField : public Pack... {};
template<typename Field1, typename Field2>
class Base
{
protected:
Field1 F1;
Field2 F2;
};
a potem
Base<EmptyField<Item1, Item2>, EmptyField<Item3, Item4>> base;
A mnie zastanawia, czy dałoby się to rozwiązać w taki sposób, że tworzenie klasy wyglądałoby tak:
Base<Item1, Item2, Item3, Item4> base;
W taki sposób, by Base
potrafiło "inteligentnie" przypisać typy do odpowiednich pól, że jak Item1
i Item2
to do F1
, a jak Item3
i Item4
to wtedy do F2
, a jak coś jeszcze innego, to się tego po prostu nie uwzględnia. Czyli niejako należałoby jedną paczkę parametrów rozbić na mniejsze i na ich bezie stworzyć klasy (wedle szablonu EmptyField
), a potem przypisać je do pól w szablonie Base
. To osiągalne?