Объявите переменные-члены из параметра шаблона variadic
Очевидно, что приведенный ниже код не компилируется в C ++. Но у меня есть случай, когда я хотел бы параметризовать класс с нуля или более элементов данных на основе параметров шаблона.
Можно ли как-нибудь объявить класс, члены данных которого зависят от параметров шаблона переменной, чтобы я мог получить доступ к каждому из них? или каким-то другим способом добиться того, что я хотел бы?
Это возникло в реальной программе, которую я решил совершенно по-другому, но теперь меня интересует более абстрактная проблема того, как я мог это сделать.
template <typename... Types> class Data
{
// Declare a variable of each type in the parameter pack
// This is NOT valid C++ and won't compile...
Types... items;
};
struct Item1
{
int a;
};
struct Item2
{
float x, y, z;
};
struct Item3
{
std::string name;
}
int main()
{
Data<Item1, Item2> data1;
Data<Item3> data2;
}