c ++ variadi c пакет параметров в массив void ** - PullRequest
1 голос
/ 22 февраля 2020

Мне нужно преобразовать пакет параметров variadi c в массив c style *1007*, где каждая запись указывает на адрес каждого упакованного параметра.

template <typename ... ArgsT>
void func (ArgtsT&&... args) {
  void* pointers[sizeof...(ArgsT)];
  // Now, I want pointers[i] to be (void*)&(ith-args)
  // How do implement this?
}

Я могу использовать только C ++ 14.

1 Ответ

1 голос
/ 22 февраля 2020

Просто сделайте расширение пакета параметров с получением адреса объектов по &:

template <typename ... ArgsT>
void func (ArgsT && ... args) 
{
  void* pointers[sizeof...(ArgsT)] = { &args... };
}

Демо

...