c++ - C++可变参数包装到void **数组

标签 c++ c++14

我需要将可变参数包转换为c样式void**数组,每个条目都指向每个打包参数的地址。

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。

最佳答案

只需通过&来获取对象的地址即可扩展参数包:

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

Demo

关于c++ - C++可变参数包装到void **数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60354825/

相关文章:

c++ - 在 Python 中使用自定义 Qt 子类

C++ 函数写得不好,不知道如何简化它[初学者]

c++ - 关于在windows :中使用CreateFile打开一个管道

c++ - 静态 constexpr 成员变量初始化

c++ - 调用的对象类型 'auto' 不是函数或函数指针

C++通过随机选择它们的元素从两个元组制作元组

c++ - 使用 boost.hana 内省(introspection)结构定义

c++ - 如何一一检查 const char* 值

c++ - 传递函数模板的地址

c++ - 内部编译器错误,同时使用 boost spirit x3