У меня много функций с этой подписью:
DoSomething(int x, int y, int z, int t, int u, int p);
Все они имеют одинаковое количество параметров и одинаковый тип параметров.
Я хочу иметь возможность использоватьони вот так:
DoSomething(1, 2, 3, 4, 5, 6);
Я знаю, что компилятор не может различить функции с одной и той же сигнатурой (они просто недопустимы).
Для этого я хотел бы обернуть параметрыфункции в логических «конструктах».Это не означает классы или структуры.Например:
DoSomething(Construct1(x, y, z), Construct2(t, u, p));
or
DoSomething(Construct1(x, y), Constrcut2(t, u, p, o));
В этом случае я могу различить две функции, и они имеют одинаковое количество параметров.Если я использую объекты с разными конструкторами, даже если это const от ref, используя класс или структуру, Construct все еще создается.Например:
DoSomething(const Construct1& constr1, const Construct2& constr2)
{
constr1.x + constr2.t
}
DoSomething(Construct1(1, 2, 3), Construct2(4, 5, 6));
В этом случае создаются Construct1 и Construct2.
То, что я хочу:
DoSomething(Construct1(x, y, z), Construct2(t, u, p));
or
DoSomething(Construct1(x, y), Constrcut2(t, u, p, o));
во время компиляции, чтобы расширить до:
DoSomething(int x, int y, int z, int t, int u, int p);
, что исключает необходимость создания объекта.Я не ищу объектное решение.Все, что может расширить это, можно только приветствовать.Даже если это макрос.Я не ищу полное решение, но если вы можете указать мне на то, что я должен прочитать, чтобы сделать это сам, то это более чем приветствуется.
Заранее спасибо.