I have not studied this issue carefully, but I think that one simple way to implement your proposal without introducing new things into the language is to allow the following syntax

void f(int x = 0, struct { int y = 43; int z = 23; } v = {});

As a shorthand for the following syntax

struct S { int y = 43; int z = 23; };
void f(int x = 0, S v = {});

That is,  allow a struct/class to be declared and defined inside the function declaration. The struct/class may be named or not.

Then we can call the function in a regular way

f(0, { .y{43}, .z{23} });

Of course, the syntax that you propose is more brief. However, the brevity comes at the expense of complicating the language by introducing completely new things and completely new syntax.