Здравствуйте, Shmj, Вы писали:
S>Для C++ вроде и все есть, но все жутко не удобно — ведь еще нужно писать обвязку.
Дарю лайфхак:
Designated initializers
http://coliru.stacked-crooked.com/a/3c18a1b78cced9ad
struct FooParams {int a; double b = 3.14; int c; int e = 42; int f; int g; int h;};
void foo(FooParams _) {/* . . . */}
int main()
{
foo({.a = 123, .e = 456, .h = 789});
}
P.S. Кстати говоря, такой приём даёт ещё одно преимущество — определенность в порядке инициализации параметров — строго слева направо. Тогда как порядок инициализации обычных фактических параметров функций не регламентирован.