Оператор * из Python в C++

Как в C++ можно реализовать питоновский * оператор для раскрытия коллекции в нужное количество переменных?

Примеры:

std::vector x = {1, 2, 3};
const auto [a, b, c] = star(x);
const auto l = [](int x, int y, int z) {};
l(star(x));

Ответы (1 шт):

Автор решения: Chorkov
std::tuple x ={ 1, 2, 3 }; // std::vector x = {1, 2, 3};
const auto [a, b, c] = x; //  = star(x);
const auto l = [](int x, int y, int z) {};
std::apply(l, x) ; //     l(star(x));

Или, используя std::array и стандартный массив вместо tuple (требуется C++20):

int x[] ={ 1, 2, 3 }; // std::vector x = {1, 2, 3};
const auto [a, b, c] = std::to_array(x);
const auto l = [](int , int , int ) {};
std::apply(l, std::to_array(x)) ; //     l(star(x));
→ Ссылка