小编Ben*_*n H的帖子

将STL容器扩展为可变参数模板

为了保持通用和简单,请说我有一个整数的std :: vector,例如:

std::vector<int> v;
Run Code Online (Sandbox Code Playgroud)

现在,我想知道的是,是否有可能从v中取n(其中n是编译时已知的常量)值并将它们传递给任意函数?我知道这对于可变参数模板是可行的:

template<typename... T>
void pass(void (*func)(int, int, int), T... t) {
  func(t...);
}
Run Code Online (Sandbox Code Playgroud)

然后我们希望'pass'被调用正好3个整数.细节并不重要.我想知道的是,以下是某种可行的方式:

void pass(void (*func)(int, int, int), std::vector<int> &t) {
  auto iter = t.begin();
  func((*iter++)...);
}
Run Code Online (Sandbox Code Playgroud)

哪里......被用作可变参数模板?基本上,我问我是否可以

  1. 将std :: vector或其他STL容器展开为具有n个元素的可变参数模板
  2. 和/或按顺序将这些值直接传递给被调用的函数

这可能与C++ 11一起使用吗?注意到我需要这个在MSVC v120/VS2013上工作.

c++ templates stl variadic-templates c++11

3
推荐指数
1
解决办法
1436
查看次数

标签 统计

c++ ×1

c++11 ×1

stl ×1

templates ×1

variadic-templates ×1