У меня есть перегруженная функция, которую я должен вызывать многими различными типами.Простой подход заключается в следующем:
uint8_t a;
uint16_t b;
//....
double x;
doSomething(a);
doSomething(b);
//...
doSomething(x);
сжатое выражение этих вызовов может быть выполнено с помощью шаблона с переменным числом аргументов, как описано в этом Q & A .Код будет выглядеть примерно так:
auto doSomethingForAllTypes = [](auto&&... args) {
(doSomething(args), ...);
};
uint8_t a;
uint16_t b;
//....
double x;
doSomethingForAllTypes(a, b, ... ,x);
Но мне придется делать это во многих местах кода, поэтому я хотел бы определить список типов только один раз.Я хотел бы иметь код, который концептуально выглядит следующим образом:
auto doSomethingForAllTypes = [](auto&&... args) {
(doSomething(args), ...);
};
someContainer allTypesNeeded(uint8_t, uint16_t, ... double);
doSomethingForAllTypes(allTypesNeeded);
Как это можно сделать?