#include template struct TypeList { TypeList(TypeList const &) = delete; enum { size = sizeof ...(Types) }; }; //VECTOR template struct Vector: public std::vector { Vector(std::initializer_list iniValues) : std::vector(iniValues) {} }; //= //UWRAP template struct UWrap: public Type { UWrap(Type const &type) : Type(type) {} }; //= //MULTIBASE template struct MultiBase; //= //MULTIBASEREC template struct MultiBase : public UWrap, public MultiBase { using Type = PolicyT1; using Base = MultiBase; MultiBase(PolicyT1 && policyt1, PolicyTypes &&...policytypes) : UWrap(std::forward(policyt1)), MultiBase( std::forward(policytypes)...) {} }; //= //MULTIBASEDONE template struct MultiBase {}; //= //MULTI template