Распаковать в функциональные параметры

Теоретически возможно добавить функцию языка для распаковки структур в списки фактических параметров функции? Я имею в виду следующее.

template< typename ...Ts >
void f(Ts... values) { (std::cout << ... << values) << std::endl; }

struct S { int a; char c; double d; };
S s{1, '2', 3.0};
f([s]);

void g(int, int, int) {}

g([s]); // warning about narrowing conversion

void h(int &, int &, int &) {}

h([s]); // hard error ("cannot bind to...")

Было бы удобно иметь дело с подходящими структурами неизвестного количества членов. Потому что текущий структурированные привязки не может «распаковать» структуры с неизвестным количеством компонентов (например, auto... [x] = s;) из-за отсутствия контекста шаблона, где это возможно operator ... иметь дело с переменным числом типов / значений.

Какие минусы могут быть на этом пути?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]