Я пытаюсь выяснить, как взять плоский пакет параметров и преобразовать его в initializer_list
, где аргументы пакета логически сгруппированы. Допустим, у меня есть что-то вроде:
void doSomething(std::initializer_list<std::pair<const char *, int>> args) {
...
}
Я хочу написать вариант c variadi, который принимает пары в виде плоского списка аргументов. Что-то вроде:
template <typename ... Args>
void doSomethingFlattened(const char *name, int value, Args... args) {
doSomething({/*what goes here?*/});
}
doSomethingFlattened("a", 1, "b", 2, "c", 3);
doSomethingFlattened("a", 1, "b", 2, "c"); // compile error
Возможно ли это в C ++ 17?