Информация об изменениях

Сообщение Re[5]: Передача аргументов в функцию - позиционные vs именов от 21.03.2025 19:01

Изменено 21.03.2025 19:34 rg45

Re[5]: Передача аргументов в функцию - позиционные vs именов
Здравствуйте, Shmj, Вы писали:

S>Для C++ вроде и все есть, но все жутко не удобно — ведь еще нужно писать обвязку.


Дарю лайфхак: Designated initializers

http://coliru.stacked-crooked.com/a/11a8da772b07cc68

struct FooParams {int a; int b; int c; int e; int f; int g; int h;};

void foo(FooParams _) {/* . . . */}

int main()
{
    foo({.a = 123, .e = 456, .h = 789});
}


P.S. Кстати говоря, такой приём даёт ещё одно преимущество — определенность в порядке инициализации параметров — строго слева направо. Тогда как порядок инициализации обычных фактических параметров функций не регламентирован.
Re[5]: Передача аргументов в функцию - позиционные vs именов
Здравствуйте, 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. Кстати говоря, такой приём даёт ещё одно преимущество — определенность в порядке инициализации параметров — строго слева направо. Тогда как порядок инициализации обычных фактических параметров функций не регламентирован.