Как можно организовать динамический std::tuple
using variant= std::variant<int, double, std::string>;
std::vector<variant> array;
array.push_back(5.0);
array.push_back("some string");
array.push_back(static_cast<int>(1));
std::tuple<double, std::string, int> tuple1{std::get<double>(array[0]),
std::get<std::string>(array[1]),
std::get<int>(array[2])};
array.push_back("some string 2");
std::tuple<double, std::string, int, std::string> tuple2{std::get<double>(array[0]),
std::get<std::string>(array[1]),
std::get<int>(array[2]),
std::get<std::string>(array[3])};
array динамически заполняется в runtim-е, и в какой то момент с него надо "снять" std::tuple.