Теоретически возможно добавить функцию языка для распаковки структур в списки фактических параметров функции? Я имею в виду следующее.
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 ...
иметь дело с переменным числом типов / значений.
Какие минусы могут быть на этом пути?
Задача ещё не решена.
Других решений пока нет …