Существует функция, которая действует как прокси/перехват истинной функции, например
Код: Выделить всё
int foo(int a, float b, void* c, std::string d, int& e, int f) {
// possible bookkeeping here
// ...
// notice missing "a" argument, passing a *tail* of all arguments
return foo_impl(b, c, d, e, f);
}
Теперь я хотел бы вызовите foo_impl с минимальными накладными расходами, в частности с экономией на копировании аргументов, например
Код: Выделить всё
struct FooArgs {
float b;
void* c;
std::string d;
int& e;
int f;
};
int foo_impl(FooArgs* args);
int foo(int a, float b, void* c, std::string d, int& e, int f) {
// ...
auto args = FooArgs{b, c, d, e, f};
return foo_impl(&args);
}
Должна быть возможность получить указатель на foo:: аргумент b и интерпретировать его как FooArgs*
Код: Выделить всё
int foo(int a, float b, void* c, std::string d, int& e, int f) {
// ...
return foo_impl(reinterpret_cast(&b));
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... as-structs