```cpp #include using namespace std::literals; template struct aggregate_binding : Ts... { aggregate_binding(Ts... t) : Ts(t)... {} using Ts::operator()...; template auto operator()(K const& k) const { return k; } }; template aggregate_binding(Ts...) -> aggregate_binding; template struct box {}; template auto bind(Value const& v) { return [v](box const&) { return v; }; } template struct parameter { template auto operator=(T const& v) const { return bind(v); } }; parameter<0> const x_ = {}; parameter<1> const y_ = {}; parameter<2> const z_ = {}; template auto make_typed_tuple(Things const&... ts) { return aggregate_binding(ts...); } template auto f(K const&) { auto u = make_typed_tuple( x_ = 1.5, y_ = "test"sv); return u(box{}); } auto x = f(x_); auto y = f(y_); ```