Оператор * из 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));