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

Сообщение Re[3]: Аналог "discarding _" для С++ от 30.06.2025 6:53

Изменено 30.06.2025 7:01 kov_serg

Re[3]: Аналог "discarding _" для С++
Здравствуйте, Went, Вы писали:

W>Аналогично, не понимаю при чем тут это. У меня задача — автоматизированная трансляция C# кода в С++. Хочу найти оптимальную замену "discarding _". Другими словами, во что транслировать такое:

void foo(out int x) { x = 1; }
..
foo(out var _);


foo(/*что сюда написать? чтобы универсально и портабельно?*/);


если есть foo(out var _); то добавить определение void foo(void);
void foo(int& x) { x=1; }
void foo(void) { int x; foo(x); }
...
foo();

или сделать костыль вида
template<class T>void call(void (*fn)(T&)) { T t; fn(t); }
...
call( foo );
будет напоминить fortran
Re[3]: Аналог "discarding _" для С++
Здравствуйте, Went, Вы писали:

W>Аналогично, не понимаю при чем тут это. У меня задача — автоматизированная трансляция C# кода в С++. Хочу найти оптимальную замену "discarding _". Другими словами, во что транслировать такое:

void foo(out int x) { x = 1; }
..
foo(out var _);


foo(/*что сюда написать? чтобы универсально и портабельно?*/);


если есть foo(out var _); то добавить определение void foo(void);
void foo(int& x) { x=1; }
void foo(void) { int x; foo(x); }
...
foo();

или если не хочется вводить новые сигнатуры, воспользоваться анонимными функциями
([&]{ int x; foo(x); }());

или сделать костыль вида
template<class T>void call(void (*fn)(T&)) { T t; fn(t); }
...
call( foo );
будет напоминить fortran