Declarar variables miembro del parámetro de plantilla variable

Obviamente, el siguiente código no se compila en C ++. Pero tengo un caso en el que me gustaría parametrizar una clase con cero o más elementos de datos basados en parámetros de plantilla.

¿Hay alguna manera de declarar una clase cuyos miembros de datos dependan de parámetros de plantilla variables para poder acceder a cada uno de ellos? o alguna otra forma de lograr lo que me gustaría?

Esto surgió en un programa real que resolví de una manera completamente diferente, pero ahora estoy interesado en el problema más abstracto de cómo podría haberlo hecho.

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;
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta